C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了计算C程序中的最大int值(1 << 31) - 1大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
gcc(4.6.3)编译它不会产生警告,结果产生-2147483648.

printf ("%d",(1<<31));

编译它会产生“警告:表达式中的整数溢出[-Woverflow]”并生成2147483647作为结果.

printf ("%d". (1<<31)-1);

我很困惑为什么第二个表达式给出整数溢出警告.

解决方法

尽管对于带符号的32位整数,1 <<< 31可以说是未定义的行为,但它通常导致最大负32位2的补码整数值(0x80000000 = -2147483648).如果您尝试从此值中减去1,则值下溢并成为最大正值,因此编译器警告.

1<<31      0x80000000                -2147483648
(1<<31)-1   0x80000000-1 = 0x7fffffff  2147483647

大佬总结

以上是大佬教程为你收集整理的计算C程序中的最大int值(1 << 31) - 1全部内容,希望文章能够帮你解决计算C程序中的最大int值(1 << 31) - 1所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。