Fortran Coder

查看: 1279|回复: 2
打印 上一主题 下一主题

[数值问题] 数值溢出显示负数

[复制链接]

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

楼主
发表于 2023-8-31 08:39:13 | 显示全部楼层
通常编译器不会检查 integer 的溢出,而只会检查浮点数的溢出。

800000*24240 = 19392000000 也就是十六进制的 0x483DA7000,超出32位整数的表达范围。
于是会丢弃超出的 0x400000000,剩下 0x83DA7000
而 0x83DA7000 表示成有符号整数,就是 -2082836480

你可以了解一下计算机存储整数的知识,比如 补码 啊什么的

评分

参与人数 1F 币 +10 贡献 +10 收起 理由
愤怒的三炮 + 10 + 10 教科书级别~

查看全部评分

您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-11 00:32

Powered by Tencent X3.4

© 2013-2024 Tencent

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