【问题标题】:Why is initializing an integer in C++ to 010 different from initializing it to 10?为什么将 C++ 中的整数初始化为 010 与将其初始化为 10 不同?
【发布时间】:2021-08-13 21:30:57
【问题描述】:

当整数初始化为int a = 010时,a实际上设置为8,但对于int a = 10a设置为10。 谁能告诉我为什么a 没有为int a = 010 设置为10?

【问题讨论】:

    标签: c++


    【解决方案1】:

    因为它将 010 解释为 八进制 格式的数字。在 base-8 系统中,数字 10 等于 base-10 中的数字 8(我们的标准计数系统)。

    更一般地说,在 C++ 世界中,在整数文字前加上 0 指定一个八进制文字,因此编译器的行为与预期完全一致。

    【讨论】:

      【解决方案2】:
      数字前的

      0 表示它采用octal 表示法。因此,由于八进制使用 8 为基数,因此 010 将等于 8

      同样,0x 用于hexadecimal 表示法,它使用 16 的基数。所以 0x10 将等于十进制的 16

      【讨论】:

        【解决方案3】:

        CC++Objective C 和相关语言中,0 前缀表示octal 字面常量,因此010 = 8 在十进制中。

        【讨论】:

          【解决方案4】:

          010 中以 0 开头表示该数字为八进制形式。所以 010 表示十进制的 8。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-08-07
            • 2018-01-10
            • 2017-01-22
            • 2019-06-18
            • 2012-05-17
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多