Delphi XE4 - 八进制常数像十进制常数一样工作

2023-11-29

今天我正在对我的队友进行代码审查。它是普通的旧 Delphi,版本 XE4。我检测到这样的代码:

cWin_CountryIdsSet: array[0..243] of integer = (499, 688, 040, ...)

它是十进制 ID 列表,但其中之一 -040- 看起来像八进制,对吧?我立即告诉他这个问题,但他回答说:“不,它的工作方式就像小数,你自己看看”。他是对的!我写了一个小例子:

Writeln(080);
if 80 = 080 then Writeln('They are equal');
Writeln(IntToStr(080));

它显示:

80
They are equal
80 

所以这意味着这个内河码头关于整数常量的解释目前是不正确的。尤其这句话是错误的:

所有以零开头的常量都被视为八进制。如果八进制常量包含非法数字 8 或 9,则会报告错误。超过 037777777777 的八进制常数将被截断。

我没有收到任何关于使用数字 8 的错误,并且编译器忽略了前导 0。有人可以解释一下这里谁错了以及现在如何在 Delphi 中使用八进制常量吗?

提前谢谢您!

Updated:Delphi 不支持八进制常量的显式声明。所以,这是多语言开发的诅咒,我错误地打扰了我的队友。感谢您的所有回答!


您链接到的是C++参考,不是Delphi参考。 Delphi 不支持八进制文字,仅支持十进制和十六进制文字。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Delphi XE4 - 八进制常数像十进制常数一样工作 的相关文章

随机推荐