| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2047 人关注过本帖
标题:c语言强制类型转化出现-2147483648
只看楼主 加入收藏
曼巴精神
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2020-4-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
c语言强制类型转化出现-2147483648
c语言强制类型转化出现-2147483648

float a=12345678912345.22;
int b=(int)a;
输出b就是-2147483648
搜索更多相关主题的帖子: 出现 类型 强制 c语言 转化 
2020-11-05 11:43
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
那你希望 (int)a 得到一个什么结果呢?

12345678912345 需要 44bits 的空间才能表达它。
2020-11-05 12:37
曼巴精神
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2020-4-5
收藏
得分:0 
回复 2楼 rjsp
就是在实际数据运算过程中,发现用比较大的数  取整后会发生这种情况,为什么是44bit啊



请多指教!!!
2020-11-05 18:54
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:20 
回复 3楼 曼巴精神
int 不可能无限大,肯定是有表达范围的呀。
(另外,对于 具符号整型 而言,溢出 是 未定义行为)

因为 2的43次方 < 12345678912345 <= 2的44次方,
所以 12345678912345 至少需要一个 44bits 有效位的类型。
2020-11-05 19:10
曼巴精神
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2020-4-5
收藏
得分:0 
回复 4楼 rjsp
好的多谢

请多指教!!!
2020-11-05 20:20
角动量
Rank: 1
等 级:新手上路
帖 子:5
专家分:5
注 册:2020-11-6
收藏
得分:0 
版主以回复正确地结果
2020-11-08 00:08
快速回复:c语言强制类型转化出现-2147483648
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036281 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved