Delphi XE4 - 八进制常量与十进制常量一样

Ivk*_*gor 4 delphi delphi-xe4

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

cWin_CountryIdsSet: array[0..243] of integer = (499, 688, 040, ...)
Run Code Online (Sandbox Code Playgroud)

它是十进制ID列表,但其中一个 - 040 - 看起来像八进制,对吧?我马上告诉他这个问题,但他回答说:"不,它就像小数一样,自己看看".他是对的!我写了一个小例子:

Writeln(080);
if 80 = 080 then Writeln('They are equal');
Writeln(IntToStr(080));
Run Code Online (Sandbox Code Playgroud)

它显示:

80
They are equal
80 
Run Code Online (Sandbox Code Playgroud)

所以这意味着此Embarcadero 对整数常量解释目前是不正确的.特别是这句话错了:

所有具有初始零的常量都被视为八进制.如果八进制常量包含非法数字8或9,则报告错误.超过037777777777的八进制常数被截断.

我没有得到任何关于使用数字8和编译器忽略前导0的错误.有人可以解释我,这里有谁错,现在如何使用Delphi中的八进制常量?

提前谢谢你!

更新: Delphi不支持显式声明八进制常量.所以,这是多语言发展的诅咒,我错误地打扰了我的队友.谢谢你的所有答案!

MBo*_*MBo 8

你链接的是C++参考,而不是Delphi参考.Delphi不支持八进制文字,只支持十进制和十六进制文字.