1. 程式人生 > >對 c\c++ char型別的理解

對 c\c++ char型別的理解

比如char a='1234';c++會認為單引號裡的每一個數值都看做一個字元字面值,也就是說1 2 3 4各佔一個位元組,'1234'也就是一共佔4個位元組,然而char變數a只是佔一個位元組,初始化它的值卻有4個位元組,系統要從'1234'中擷取一個位元組的內容給a,然而是擷取'1'給a嗎?不是,是把'4'給a。因為在x86平臺上,資料是以little-endian 的形式排列的,低位位元組放在記憶體的低地址,高位位元組放在記憶體的高地址。我們看'1234',從左到右從1到4,然而在計算機中存放的格式是從0x04到0x01,就是說'1234'的低位4存放在計算機的記憶體低地址位,'1234'的高位1存放在記憶體的高地址位,所以當把'1234'給變數a時,系統把記憶體中的地址中存放的4給a,其餘的全部不要了。


當給char變數賦值正確的用ASCII表中的字元,比如char c='!',單引號裡面的內容是什麼,cout就會輸出什麼。
當給char變數用一個整形字面字初始化時,比如char d=55,這時系統會根據在ASCII表中這個整型值代表的控制字元是什麼,就會輸入什麼,比如在ASCII表中55是'7'的ASCII值,cout<<d;的結果就是7。