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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)