谁能给我说出此程序的答案为什么是40541 急急!!
main()
{ int m;
union uu
{ int a;
char b[2];
}nn;
nn.b[0]= 'a ';
nn.b[1]= 'A ';
printf( "--------------------------\n ");
printf( "%o\n ",nn.a);
}
[解决办法]
//| 'A '==65| 01000001
//| 'a '==97| 01100001
01000001 01100001
8进制为 040541
10进制这16737
[解决办法]
sizeof(int) = 4下
小端输出 nn.a = 0xXXXX4161,八进制为40541, 高16位不定
大端输出 nn.a = 0x6141XXXX,八进制不定, 低16位不定
[解决办法]
int a占4个字节,char b[0],b[1]分别和a的低位两个字节共享内存空间。具体:
a:xx xx xx xx
b: [1][0]
nn.b[0]= 'a ';
b[0]的二进制表示为:0110 0001b
nn.b[1]= 'A ';
b[1]的二进制表示为:0100 0001b
合起来a的内存中的二进制表示为:
xxxx xxxx xxxx xxxx 0100 0001 0110 0001b
x表示不确定。后面的二进制0100 0001 0110 0001每三位结合
二进制表示:0 100 000 101 100 001
八进制表示:0 4 0 5 4 1