Possible Duplicate:
C Macro definition to determine big endian or little endian machine?
int main()
{
int x = 1;
char *y = (char*)&x;
printf("%c\n",*y+48);
}
如果它是小端,它将打印1.如果它是大端,它将打印0.对吗?或者,是否将char*设置为int x总是指向最低有效位,而不考虑字符顺序?
Possible Duplicate:
C Macro definition to determine big endian or little endian machine?
int main()
{
int x = 1;
char *y = (char*)&x;
printf("%c\n",*y+48);
}
如果它是小端,它将打印1.如果它是大端,它将打印0.对吗?或者,是否将char*设置为int x总是指向最低有效位,而不考虑字符顺序?
简而言之,是的.
假设我们在一台32位机器上.
如果是小端,则内存中的x
将类似于:
higher memory
----->
+----+----+----+----+
|0x01|0x00|0x00|0x00|
+----+----+----+----+
A
|
&x
所以是(char*)(&x) == 1
,还有*y+48 == '1'
.(48是"0"的ASCII代码)
如果它是大端字节序,它将是:
+----+----+----+----+
|0x00|0x00|0x00|0x01|
+----+----+----+----+
A
|
&x
所以这个是'0'
美元.