今天我正在对我的队友进行代码审查。它是普通的旧版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目前不正确。特别是这句话错了:
所有具有初始零的常量都被视为八进制。如果八进制常量包含非法数字8或9,则报告错误。超过037777777777的八进制常数被截断。
我没有得到任何关于使用数字8和编译器忽略前导0的错误。有人可以解释一下,这里有谁错,现在如何使用Delphi中的八进制常量?
提前谢谢你!
更新: Delphi不支持显式声明八进制常量。所以,这是多语言发展的诅咒,我错误地打扰了我的队友。谢谢你的所有答案!
答案 0 :(得分:8)
您链接的是 C ++ 引用,而不是 Delphi 引用。 Delphi不支持八进制文字,只支持十进制和十六进制文字。
答案 1 :(得分:3)
Delphi文字可以是十进制或十六进制。没有任何其他代表的支持。
您引用的文档是针对C ++而不是Delphi。