相关疑难解决方法(0)

E2099转换或算术运算溢出

我想将int64与这样的变量进行比较:

const GB=1073741824;
if DiskFile.Size< 1*GB then 
Run Code Online (Sandbox Code Playgroud)

它适用1但不适用3:

if DiskFile.Size< 3*GB then 
Run Code Online (Sandbox Code Playgroud)

这篇文章(Strange Delphi整数乘法行为)解释了原因.我同意这个解释.2*GB的结果不能适合'整数'.我不明白为什么编译器选择整数而不是int64?如下:

if DiskFile.Size< 3073741824 then      <--------- almost 3GB
Run Code Online (Sandbox Code Playgroud)

这样可行.


有没有办法用3*GB样式编写最后一行代码(使用常量)但是没有为1GB,2GB,3GB,4GB等定义新的常量?

delphi

2
推荐指数
1
解决办法
950
查看次数

标签 统计

delphi ×1