我在 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/