32位最大整型值+1后是多少

发布于 2022-08-26 19:22:58 字数 226 浏览 24 评论 0

32位最大的整型值为0x7fffffff.

int max = 0x7fffffff;
cout << max << endl;
cout << max+1 << endl;

程序输出:

2147483647
-2147483648

请问这是怎么回事?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

_失温 2022-09-02 19:22:58

难道不是吗?

  0111 1111 1111 1111 1111 1111 1111 1111
+ 0000 0000 0000 0000 0000 0000 0000 0001
-----------------------------------------
  1000 0000 0000 0000 0000 0000 0000 0000

http://zh.wikipedia.org/wiki/%E4%BA%8C%E8%A1%A5%E6%95%B0

剩余の解释 2022-09-02 19:22:58

插一句,C 和 C++ 标准都定义有符号整型的溢出行为是未定义的。亦即不论编译器把这个值弄成多少都是符合标准的,甚至它也可以中止编译或者运行。

参见: http://stackoverflow.com/q/18195715/296473 http://stackoverflow.com/q/16188263/296473

书信已泛黄 2022-09-02 19:22:58

很正确啊,这个刚好是一个循环,这个不就是叫做溢出嘛,计算机组成原理上讲的有,平时我们写程序时也应该注意这个问题

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文