69,336
社区成员
发帖
与我相关
我的任务
分享
/*
** 测试计算机大小端的程序
** 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);
}
}
int checkCPU( )
{
{
union w
{
int a;
char b;
} c;
c.a = 1;
return(c.b ==1);
}
}