读书人

小弟我这个判断大小端的代码对吗

发布时间: 2012-09-18 16:21:42 作者: rapoo

我这个判断大小端的代码对吗?

C/C++ code
/*** 测试计算机大小端的程序** 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;}


[解决办法]
C/C++ code
int checkCPU( ){    {           union w           {                    int  a;                  char b;           } c;           c.a = 1;           return(c.b ==1);    }}
[解决办法]
传送,可以自己看看
[解决办法]
无论小端机器还是大端机器,指针均指向一个变量地址的起始处,即地址值最小的空间;

读书人网 >C语言

热点推荐