为啥将 C++ 中的整数初始化为 010 与将其初始化为 10 不同?

Posted

技术标签:

【中文标题】为啥将 C++ 中的整数初始化为 010 与将其初始化为 10 不同?【英文标题】:Why is initializing an integer in C++ to 010 different from initializing it to 10?为什么将 C++ 中的整数初始化为 010 与将其初始化为 10 不同? 【发布时间】:2011-06-15 14:33:42 【问题描述】:

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

【问题讨论】:

【参考方案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。

【讨论】:

以上是关于为啥将 C++ 中的整数初始化为 010 与将其初始化为 10 不同?的主要内容,如果未能解决你的问题,请参考以下文章

为啥memset不能将数组元素初始化为1?(急)

为啥当我将其大小初始化为 5 并且只给出 5 个元素时,向量的大小会增加到 10?

c++ 指针基础问题 指针已经被初始化为NULL了,为啥还会出错?

如何将静态数组初始化为 C++ 函数中的某个值?

在 C++ 中初始化动态二维数组

将一个多维数组初始化为一个类 c++中的成员