以下是引用BYSF_XF在2011-5-17 14:04:55的发言:
void main()
{
short i=-4;
printf("\ni:dec=%d,oct=%o,hex=%x,unsigned=%u\n",i,i,i,i);
}
问输出结果是多少
我的答案是: i:dec=-4,oct=-4,hex=-4,unsigned=4
在VC++6.0上测试结果是:dec=-4,oct=37777777774,hex=fffffffc,unsigned=4294967292
书上的答案是:dec=-4,oct=177774,hex=fffcunsigned=65532
极度困惑中,求高手解答
i=4 在计算机中存储为00000000 00000100(2字节)
i=-4在计算机中存储为11111111 11111100
i=-1在计算机中存储为11111111 11111111
i=0 在计算机中存储为00000000 00000000
所以把i=-4 化为八进制时先转换为4字节11 111 111 111 111 111 111 111 111 111 100(二进制)=37777777774(八进制)
1111 1111 1111 1111 1111 1111 1111 1100(二进制)=fffffffc(十六进制)=4294967292(十进制)