今天我正在对我的队友进行代码审查。它是普通的旧 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
所以这意味着这个Embarcadero的explanation about integer constants目前是不正确的。尤其是这句话是错误的:
All constants with an initial zero are taken to be octal. If an octal constant contains the illegal digits 8 or 9, an error is reported. Octal constants exceeding 037777777777 are truncated.
我没有收到任何有关使用数字 8 的错误,并且编译器忽略了前导 0。有人可以解释一下这里谁错了以及现在如何在 Delphi 中使用八进制常量吗?
提前谢谢您!
更新:Delphi 不支持八进制常量的显式声明。所以,这是多语言开发的诅咒,我错误地打扰了我的队友。谢谢大家的回答!
最佳答案
您链接到的是C++引用,而不是Delphi引用。 Delphi 不支持八进制文字,仅支持十进制和十六进制文字。
关于Delphi XE4 - 八进制常数像十进制常数一样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23214528/