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