加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

奇怪的Delphi整数乘法行为

发布时间:2020-12-15 09:43:43 所属栏目:大数据 来源:网络整理
导读:我正在研究一些古老的Delphi代码,我遇到了一些我不太了解的东西. [bla is set to 130245932]outresult := ((bla * 1103516849) + 12359);[outresult is equal to -413953101] 如何将两个正数相乘得到负数?为什么当我将bla变量从等式中取出并直接使用整数时(
我正在研究一些古老的Delphi代码,我遇到了一些我不太了解的东西.

[bla is set to 130245932]

outresult := ((bla * 1103516849) + 12359);

[outresult is equal to -413953101]

如何将两个正数相乘得到负数?为什么当我将bla变量从等式中取出并直接使用整数时(就像这样)

outresult := ((130245932 * 1103516849) + 12359);

在应用程序编译之前我收到错误

[DCC Error] Unit1.pas(60): E2099 Overflow in conversion or arithmetic operation

一些天才将不胜感激.谢谢.

解决方法

好吧,我会回答这个问题.

错误信息应该非常清楚.你有一个整数溢出:

130245932 * 1103516849

因为130245932 * 1103516849 = 143728580475708268这太大而不适合32位整数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读