[求助]小菜发问~高手进来帮下
main(){unsigned int a=65535;
printf("a=%d",a);
}
结果为:
a=-1
为什么结果是-1?unsigned int 的最大值不恰好是65535吗?明显没有超出范围啊?
还有就是我在win2000下为什么运行写好的代码看不到结果?
你用的格式输出符不对 %d 输出有符号的整数 %u式输出无符号的整数
在计算机中数字都是用补码表示的
无符号的数65535 用补码表示为 1 111 1111
若改为由符号的 侧第一位是符号位 在对补码求补即时原码
1 000 0001 表示出来即为 -1
但是在我的电脑上,
#include<stdio.h>
void main()
{
unsigned int a=65535;
printf("a=%d",a);
}
的输出是正确的哟。
呵呵,晕~~~~~~~~~~~~
谢谢了~~~