字符字面值一般是用一對(duì)單引號(hào)來(lái)表示。char類型一般就是用字符字面值來(lái)初始化,、賦值,。由于char類型的是單字節(jié)長(zhǎng)度,當(dāng)給char類型的變量用字符字面值賦值時(shí),,當(dāng)單引號(hào)里面的內(nèi)容超過(guò)一個(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è)字符字面值,,也就是說(shuō)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(對(duì)于int變量,int f=10;自然是正確的,這不用多解釋了,。然而如果把一個(gè)字符字面值給int,,如int g='a',會(huì)把字符a在ASCII表中的ASCII值(也就是97)給a,cout< 01100010 01100001 00000000 讀取的時(shí)候跟存入的時(shí)候整好相反,先讀高地址位,,然后低地址位,,也就是00000000 01100001 01100010 01100011 這32位代表的十進(jìn)制整型值整好是6382179。 |
|
來(lái)自: 斯卡帕的彩虹 > 《計(jì)算機(jī)文章》