• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            C++中char和int型變量的一點(diǎn)心得

            字符字面值一般是用一對(duì)單引號(hào)來表示。char類型一般就是用字符字面值來初始化、賦值。由于char類型的是單字節(jié)長(zhǎng)度,當(dāng)給char類型的變量用字符字面值賦值時(shí),當(dāng)單引號(hào)里面的內(nèi)容超過一個(gè)字節(jié)時(shí),系統(tǒng)會(huì)自動(dòng)截取一個(gè)字節(jié)的內(nèi)容給char變量,忽略其他的字節(jié)內(nèi)容。
            比如char a='1234';c++會(huì)認(rèn)為單引號(hào)里的每一個(gè)數(shù)值都看做一個(gè)字符字面值,也就是說1 2 3 4各占一個(gè)字節(jié),'1234'也就是一共占4個(gè)字節(jié),然而char變量a只是占一個(gè)字節(jié),初始化它的值卻有4個(gè)字節(jié),系統(tǒng)要從'1234'中截取一個(gè)字節(jié)的內(nèi)容給a,然而是截取'1'給a嗎?不是,是把'4'給a。因?yàn)樵趚86平臺(tái)(http://baike.baidu.com/view/339142.htm)上,數(shù)據(jù)是以little-endian(再如:char b='啊';由于一個(gè)漢字是雙字節(jié)的,系統(tǒng)會(huì)截取其中一個(gè)字節(jié)給char,但鬼才知道截取的那個(gè)字節(jié)是什么,所以cout<<b時(shí)會(huì)出現(xiàn)亂碼。
            當(dāng)給char變量賦值正確的用ASII表中的字符,比如char c='!',單引號(hào)里面的內(nèi)容是什么,cout就會(huì)輸出什么。
            當(dāng)給char變量用一個(gè)整形字面字初始化時(shí),比如char d=55,這時(shí)系統(tǒng)會(huì)根據(jù)在ASII表中這個(gè)整型值代表的控制字符是什么,就會(huì)輸入什么,比如在ASii表中55是'7'的ASII值,cout<<d;的結(jié)果就是7。char對(duì)應(yīng)ascii值如果是可顯示字符就可以輸出來,如果是不可顯示字符,就輸不出來.就好像0x0D和0x0A它們分別表于回車符和換行符,但是在它們本身沒有一個(gè)形狀能表示這些字符得,就沒辦法顯示出來了.
            然而ASCII表中只有0到127這128種,如果當(dāng)大于127的整數(shù)甚至是大于255給char時(shí),系統(tǒng)的運(yùn)行結(jié)果未知。
            字符串字面值,也就是雙引號(hào)來定義的,一般稱作為c風(fēng)格字符串,他的類型應(yīng)該是char*,所以char e="t";是會(huì)發(fā)生編譯錯(cuò)誤的。
            對(duì)于int變量,int f=10;自然是正確的,這不用多解釋了。然而如果把一個(gè)字符字面值給int,如int g='a',會(huì)把字符a在ASCII表中的ASCII值(也就是97)給a,cout<<g;的結(jié)果就是97。
            如果把一個(gè)多字符字面值給int,如int h='abc';cout<<h;的結(jié)果是6382179。這個(gè)就需要好好解釋下了,首先'a'的ASCII值是97,內(nèi)存中占一個(gè)字節(jié)8位,就是01100001,b是01100010,c是01100011。由于int是32位的,不夠的位用0補(bǔ)齊,在存入內(nèi)存時(shí),a是高位所以存到高地址位,c是低位所以存到低地址位,四個(gè)字節(jié)從低地址到高地址依次是
            01100011
            01100010
            01100001
            00000000
            讀取的時(shí)候跟存入的時(shí)候整好相反,先讀高地址位,然后低地址位,也就是00000000 01100001 01100010 01100011 這32位代表的十進(jìn)制整型值整好是6382179。
            以上有不少內(nèi)容是我從CSDN論壇上各種高人回復(fù)的貼子里總結(jié)的,在此感謝他們。

            posted on 2010-11-21 15:12 古月 閱讀(5573) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿

            隨筆分類

            隨筆檔案

            文章檔案

            C++/C

            搜索

            積分與排名

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            久久精品麻豆日日躁夜夜躁| 亚洲一级Av无码毛片久久精品| 亚洲国产另类久久久精品黑人| 性欧美大战久久久久久久久| 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 91麻精品国产91久久久久| 久久综合九色综合久99| 亚洲国产精品成人AV无码久久综合影院| 97精品伊人久久大香线蕉| 久久午夜无码鲁丝片| 久久久噜噜噜久久| 久久精品国产第一区二区三区| 久久综合伊人77777| 精品国际久久久久999波多野| 99热热久久这里只有精品68| 色综合久久无码五十路人妻| 国产精品伦理久久久久久| 一本色道久久88精品综合| 久久精品国产黑森林| 久久国产精品成人影院| 人人妻久久人人澡人人爽人人精品 | 久久国产精品一区二区| 囯产极品美女高潮无套久久久| 精品国产青草久久久久福利 | 日韩精品久久久久久久电影| 久久久精品一区二区三区| 亚洲精品高清国产一线久久| 亚洲国产成人久久精品99| 国产精品成人久久久久三级午夜电影| 久久夜色精品国产网站| 国内精品久久久久久久久电影网 | 午夜久久久久久禁播电影| 久久亚洲国产精品123区| 91精品免费久久久久久久久| 国产精品久久久久9999高清| 久久天天躁狠狠躁夜夜avapp | 久久久久亚洲精品天堂| 性做久久久久久久| 2021久久国自产拍精品| 日本三级久久网| 国产精品无码久久四虎|