其他分享
首页 > 其他分享> > c – endianess测试和类型铸造

c – endianess测试和类型铸造

作者:互联网

我知道要测试字节序,我可以这样做:

bool IsLittleEndian(){

   int a = 1;

   char* ptr = (char*)&a;

   return *ptr;
}

我的问题是为什么我们不能像这样只将int转换为char而不是int * to char *.

int a = 1;

char c = (char)a;

这也行吗?否则,我们不能做到这一点的原因是什么?

解决方法:

int和char都是数字类型.由于编译器知道正在使用的体系结构,因此无论字节顺序如何,int中的1将在char中变为1.我们使用指针来欺骗编译器不操纵数据.

标签:c-3,c,endianness
来源: https://codeday.me/bug/20190722/1503942.html