【发布时间】:2021-08-13 21:30:57
【问题描述】:
当整数初始化为int a = 010时,a实际上设置为8,但对于int a = 10,a设置为10。
谁能告诉我为什么a 没有为int a = 010 设置为10?
【问题讨论】:
标签: c++
当整数初始化为int a = 010时,a实际上设置为8,但对于int a = 10,a设置为10。
谁能告诉我为什么a 没有为int a = 010 设置为10?
【问题讨论】:
标签: c++
因为它将 010 解释为 八进制 格式的数字。在 base-8 系统中,数字 10 等于 base-10 中的数字 8(我们的标准计数系统)。
更一般地说,在 C++ 世界中,在整数文字前加上 0 指定一个八进制文字,因此编译器的行为与预期完全一致。
【讨论】:
0 表示它采用octal 表示法。因此,由于八进制使用 8 为基数,因此 010 将等于 8。
同样,0x 用于hexadecimal 表示法,它使用 16 的基数。所以 0x10 将等于十进制的 16。
【讨论】:
在C、C++、Objective C 和相关语言中,0 前缀表示octal 字面常量,因此010 = 8 在十进制中。
【讨论】:
010 中以 0 开头表示该数字为八进制形式。所以 010 表示十进制的 8。
【讨论】: