【问题标题】:Delphi XE4 - Octal constant is working like decimal constantDelphi XE4 - 八进制常量像十进制常量一样工作
【发布时间】:2014-04-22 08:37:57
【问题描述】:

今天我正在对我的队友进行代码审查。它是普通的旧 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 不支持八进制常量的显式声明。所以,这是多语言开发的诅咒,我错误地打扰了我的队友。谢谢大家的回答!

【问题讨论】:

    标签: delphi delphi-xe4


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      Delphi 文字可以是十进制或十六进制。不支持任何其他表示。

      您参考的文档是针对 C++ 而不是 Delphi。

      【讨论】:

        猜你喜欢
        • 2018-04-21
        • 2017-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-04
        • 1970-01-01
        • 2017-12-20
        • 1970-01-01
        相关资源
        最近更新 更多