C语言的简单问题,初学者

部分代码:
//将输入的十进制转换打印其二进制形式
int num = 0;
scanf_s("%d", &num);
for(int i = 32; i > 0; i-- )
{
printf("%d", (num & 0x80000000) ? (1) : (0));
num <<= 1;
}
C/C++中不是int默认有符号么?32位下int的取值范围应该是 -2147483648~2147483647 为啥当num值输入4294967296时,控制台仍能打印出11111111111111111111111111111111?系统是64位的win7,工具是vs2013。不是说64位系统下int也是占4个字节么?

当超过int的范围后,超出部分从-2147483648算起,但unsighed int超出部分 从0算起追问

能不能稍微具体点?有点懵

追答

追问

这本是不是c primer plus?在第几页?我下个PDF来瞧一瞧

追答

145

。。我在看145,应该是49

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-11-28
。。。没人告诉你通常计算机采用的是补码的形式么
相似回答