先搞清楚little_endian和big_endian,前者是指數據的高位字節存放在內存的高位地址中,低位字節存放到低位地址中,後者則相反。
1)cout<<'abc';輸出是一整型值;2)char c='abc';cout<<c;輸出是c(在little_endian下)。
原因如下:
1)前者等價於int i='abc';cout<<i;
二進制:a:01100001 b:01100010 c:01100011
內存存放:(內存地址假設從80開始)
80:01100011 //c
81:01100010 //b
82:01100001 //a
83:00000000 //int型數據佔32位 不足補零。
上面的內存內容表示:00000000 01100001 01100010 01100011 即:6382179
2)後者和1)很相似。
當字符字面量包含多個單字節字符或者包含了不能夠用char表示的字符時(如漢字),則改字面量的整型值爲implementation_defined。即1)中所說。所以從6382179轉換爲char,截取低位8bit即:01100011 即:c。