菜鸟问题:为什么打印超出int范围的书都是 -1? 谢谢

z4b 2006-03-15 04:52:13
#include <stdio.h>
#include <limits.h>
#include <float.h>
int main()
{
int c = 4294967295;
printf("%d \n", c);

return 0;
}

例如下面的 c 打印为 -1。
...全文
238 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
feny911 2006-03-15
  • 打赏
  • 举报
回复
因为对于32位的int来说4294967295就是-1
4294967294=-2
4294967293=-3
依此类推
wumingchenchao 2006-03-15
  • 打赏
  • 举报
回复
路过
final_h_man 2006-03-15
  • 打赏
  • 举报
回复
把4294967295换成4294967299试一试回得到不同的结果.
32位机越界溢出,并且进位后会更改符号位,所以会出现负数位.
而出现的负数或者正数,则是进位后剩下的数.
zwwsyy 2006-03-15
  • 打赏
  • 举报
回复
超过了 long[int] 允许数的范围(-2147483848~2147483647)
ytfrdfiw 2006-03-15
  • 打赏
  • 举报
回复
不加unsigned也行,不过不太好:)
ytfrdfiw 2006-03-15
  • 打赏
  • 举报
回复
int是有符号的,只能表示-2,147,483,648到2,147,483,647,你可以写unsigned int c = ;
printf("%u\n",c);
勿忘是"%u"
shaoboailinglijun 2006-03-15
  • 打赏
  • 举报
回复
就好象是个钟 11点过2小时就成1点了 11小时过3个小时2点了。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧