#include <stdio.h>
int main()
{
union a
{
int i;
char ch[2];
};
union a u;
u.ch[0] = 0;
u.ch[1] = 2;
u.ch[2] = 0;
u.ch[3] = 0;
printf("%d\n",u.i);
return 0;
}
在这个程序中,如果整数的大小是4个字节,那么输出将是512怎么样?我们将看到4个字节中的前两个字节将被0
和0
占用。那我为什么要把它作为输出呢?
答案 0 :(得分:1)
我认为你发布的代码是错误的,你打算初始化int
的其他两个字节,如下面的更正代码,因为否则你很少有机会得到{{ 1}}作为输出。
在这种情况下,由于大多数Intel机器都是little-endian,因此您将第三个最重要的字节设置为512
,将每个其他字节设置为0.因为2
,您得到{{1}作为输出。
2 * 256 = 512
答案 1 :(得分:0)
了解endianness。某些int
内的字节顺序取决于处理器。