鱼C论坛

 找回密码
 立即注册
查看: 992|回复: 5

[已解决]小白求助

[复制链接]
发表于 2020-10-15 21:09:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
最后的m+1为什么输出的是-2147483648?
最佳答案
2020-10-15 22:18:09
符号整数溢出
f656a357d4c595657e52f930eec365b.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-15 22:18:09 | 显示全部楼层    本楼为最佳答案   
符号整数溢出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-15 22:22:26 | 显示全部楼层
应该是编译器的一个 bug,若将 4294967295 改为 4294967296 ,则系统告警:warning C4305: 'initializing' : truncation from 'const __int64 ' to 'int '(初始化:将 _int64 类型赋值给 int,可能面临数据截断问题),由此可见,4294967295 是32位系统的最大值;

从下面的运算来看,处于边缘运算的编译器,对于有符号数,无符号的表示已经显得无力了,所以,第一句开始,n1 就等于 -1 了

  1. #include <stdio.h>

  2. int main()
  3. {
  4.         int n1 = 4294967295;       // 执行完此语句后,n1 = -1
  5.         unsigned n2 = 4294967295;  // 执行完此语句后,n1 = -1,n2 = 4294967295
  6.         int m = 2147483647;        // 执行完此语句后,n1 = -1,n2 = 4294967295,m = 2147483647,m + 1 = -2147483648
  7.         printf("作为有符号数 int 类型输出:n1 = %d,n2 = %d\n",n1,n2); // 保持一条语句后的结果
  8.         printf("作为无符号数 int 类型输出:n1 = %u,n2 = %u\n",n1,n2); // 保持一条语句后的结果
  9.         printf("m = %d\n",m);                                         // 保持一条语句后的结果
  10.         m = m + 1;    // 执行完此语句后,n1 = -1,n2 = 4294967295,m = -2147483648,m + 1 = -2147483647
  11.         printf("m + 1 = %d\n",m);  // 执行完此语句后,n1 = -1,n2 = 4294967295,m = -2147483648,m + 1 = -2147483647
  12.       
  13.         return 0;
  14. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-17 21:27:15 | 显示全部楼层
乐乐学编程 发表于 2020-10-15 22:22
应该是编译器的一个 bug,若将 4294967295 改为 4294967296 ,则系统告警:warning C4305: 'initializing'  ...
4294967295 是32位系统的最大值
你这话说滴不是很明确啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-18 07:34:48 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-10-17 21:27
你这话说滴不是很明确啊

那要怎么说呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-18 12:43:54 | 显示全部楼层

“32位系统的最大值”什么叫系统的最大值?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-4 01:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表