零总是为零,所以没关系.但在最近与我的朋友讨论时,他说今天几乎没有使用八进制文字.然后我突然意识到我的代码中几乎所有的整数文字都是八进制的,即0.
0根据C++语法是八进制文字吗?标准说什么?
当您创建一个带前导零的整数时,c如何处理它?对于不同版本的C,它有什么不同?
在我的情况下,它们似乎只是被丢弃(但也许这就是printf的作用?):
#include <stdio.h>
int main() {
int a = 005;
printf("%i\n", a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用printf来填充0,但我只是想知道它是如何工作的.
我在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;
}
Run Code Online (Sandbox Code Playgroud)
此代码与前一代码相同.但我改变了价值并写了num = 09而不是015.
我同意如果我初始化(int num = 015),它会在OCTAL中给出13的输出.
但是在我试图初始化的上述程序中(int num = 09和num = 08),它给出了你可以看到的错误.
首先,我想知道它为什么会产生错误以及如何产生错误?
其次是它背后的逻辑是什么?
如果有合适的例子,请给我合乎逻辑的理由.