1.下面的程序在INTEL机子上运行
struct B
{
union
{
struct
{
unsigned int i:2;
unsigned int j:3;
unsigned int k:3;
}X;
unsigned char c;
};
};
B m;
m.c =200;
printf("%d/n",m.X.k);
答:
m.c =200;
200 二进制: 11001000
Intel是小端机, m.X.i 占两位是: 00 即为0
m.X.j 占三位是: 010 即为2
m.X.k 占三位是: 110 即为6
2.
|
t.a为01,输出就是1
t.b为11,输出就是-1
t.c为1,输出也是-1
3个都是有符号数int嘛。
这是位扩展问题
01
11
1
编译器进行符号扩展