先搞清楚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。