c++ - 为什么会导致错误?

标签 c++ c literals

我在 CODEBLOCK 上用 C++ 编写了一个简单的程序。程序如下:

#include <iostream>
using namespace std;

int main()
{
    int num = 09;              //ERROR: Invalid digit 9 in octal constant
    cout << num << endl;

    num = 08;             //ERROR: Invalid digit 9 in octal constant
    cout << num << endl;


    return 0;
}

此代码与上一个相同。但我改变了值并写了 num=09 而不是 015。

我同意,如果我初始化(int num = 015),它会给出八进制输出 13。

但是在上面的程序中,我尝试初始化(int num = 09 和 num = 08),它给出了您可以看到的错误。

首先,我想知道为什么会产生错误以及如何产生错误?

其次是其背后的逻辑是什么?

请给我逻辑上的理由,并附上合适的例子(如果有)。

最佳答案

前导零会导致整数在 C/C++ 中被解释为八进制数。八进制的 015 为十进制的 (1*8) + 5 = 13。

关于c++ - 为什么会导致错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35802898/

相关文章:

python - 在 Python 3 中使用带字节的 textwrap.dedent()

c++ - zbar::Image::Image() 接受除 "Y800"之外的哪些图像格式?

c++ - 从非托管代码更新性能计数器

c++ - 将提升范围适配器与目录迭代器范围一起使用

c++ - int 转换为 int&?

java - 在运行时和编译时计算字符串

ruby - IntelliJ Idea Ultimate 红色下划线 Ruby shorthand hash literal

无法在 C 中正确获得钻石形状

碰撞检查不起作用

c - C中结构初始化中的表