德尔福XE4-八进制常量的工作方式与十进制常量类似



今天我正在对我的队友进行代码审查。这是一个简单的老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关于整数常数的解释目前是不正确的。尤其是这句话错了:

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

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

提前感谢!

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

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

Delphi文字可以是十进制或十六进制。没有人支持任何其他代表。

您所引用的文档是针对C++而不是Delphi的。

最新更新