这里有一道求输出值的选择题:
- #include
- #include
-
-
- union Test
- {
- int i;
- char c[3];
- };
-
-
- int main()
- {
- Test t;
- t.i = 20;
- t.c[0] = 0;
- t.c[1] = 0;
- t.c[2] = 10;
- printf("%d\n", t.i);
- system("pause");
- }
A.20
B.655360
C.2580
D.不确定
请问该选什么呢?
=================================分割线=============================
一般的电脑都是小端模式,假设在小端模式下,那么满足以下条件:
低地址在低位,高地址在高位
t.i = 20; //执行后的内存布局如下:

执行以下代码后的内存布局如下:
t.c[0] = 0;
t.c[1] = 0;
t.c[2] = 10;

此时int类型表示的值为:0x000A0000对应10进制就是655360
假设在大端模式下,那么满足以下条件:
高地址在低位,低地址在高位
t.i = 20; //执行后的内存布局如下:

执行以下代码后的内存布局如下:
t.c[0] = 0;
t.c[1] = 0;
t.c[2] = 10;

此时int类型表示的值为:0x00000A14对应的十进制就是2,580
综上,严谨一点,应该选D