我这个判断大小端的代码对吗?
/*** 测试计算机大小端的程序** syrchina 2012-8-14 */ #include <stdio.h>static union { char c[4]; unsigned long l; } endian_test = { { 'L', '?', '?', 'B' } };#define ENDIANNESS ((char)endian_test.l) // Linux方法 const static short _endianness = 0x424C;#define MY_ENDIANNESS ((char)_endianness) // 我的方法:值为B(0x42)表示大端,值为L(0x4C)表示小端 //小端机器上判断正确,但我不知道大端机器上是否正确,因为我不知道大端机器变量地址是指向了高字节还是低字节;//小端机器的变量地址是指向低字节的;比如int x,那么&x是4个字节中低字节的地址。//大端机器是怎样的呢?int main(int argc, char *argv[]){ //short int x = 0x0201; //printf("%x\n", (char)x);//输出2表示大端,输出1表示小端 printf("%c\n", ENDIANNESS); printf("%c\n", MY_ENDIANNESS); return 0;}int checkCPU( ){ { union w { int a; char b; } c; c.a = 1; return(c.b ==1); }}
[解决办法]
传送,可以自己看看
[解决办法]
无论小端机器还是大端机器,指针均指向一个变量地址的起始处,即地址值最小的空间;