C/C++ 错题总结

来源:互联网 发布:java兼职 编辑:程序博客网 时间:2024/05/16 15:12
1
写出下列程序在X86上的运行结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
structmybitfields
{
    unsigned shorta : 4;
    unsigned shortb : 5;
    unsigned shortc : 7;
} test
 
voidmain(void)
{
    inti;
    test.a = 2;
    test.b = 3;
    test.c = 0;
 
    i = *((short*)&test);
    printf("%d\n", i);
}

在结构体中,冒号想防御分配了空间,定义了a为4个字节,b 五个,C六个

在小端存储模式下,

变量名  位数
test    15 14 13 12 11 10 9 |8 7 6 5 4 |3 2 1 0
test.a                      |          |0 0 1 0
test.b                      |0 0 0 1 1 |
test.c   0  0  0  0  0  0 0 |          |

i = *((short*)&test);从首地址开始,取出两个字节的数据,即0x0032, 在转换为d%(也就是int型),为50


0 0
原创粉丝点击