C++数据类型转换的问题
[plain]
#include <iostream.h> void main() { int i=0xb62; char c; c=i; cout<<c<<endl; }这里为什么输出的是b?
2.先检测一下我们所使用的电脑的CPU的字节序
版本一(有问题,结果无论如何都是34,不能说明34是高地址的还是低地址的)
版本二(根据 shineyan1991的留言修改后得到的,在此谢谢 shineyan1991的建议)
从上图可知,CPU的字节序是小端模式。
知识点
小端模式(Little-Endian)
数据类型中的高位数据存放于高地址部分,低位数据存放于低地址部分。简而言之:高位在后,低位在前。
大端模式(Big-Endian)
数据类型中的高位数据存放于低地址部分,低位数据存放于高地址部分。简而言之:高位在前,低位在后。
3.初步分析 0xb62是十六进制,因为char是一个字节的,所以我们只取低8位(丢弃了高字节,而保留了低字节),这是和语言有关,和CPU的架构无关,一个十六进制位转换为4个二进制位,所以,低8位就是62转换的,就是01100010,传递给char后,char的值就是98,根据ASCII,就会输出b。