前面为 0 的 C++ int 更改整个值

Ste*_*Hat 5 c++ variables

我有一个非常奇怪的问题,如果我像这样声明一个 int

int time = 0110;
Run Code Online (Sandbox Code Playgroud)

然后将其显示到控制台,返回的值为72。但是,当我删除前面的 0 以便int time = 110;控制台按110预期显示时。

我想知道两件事,首先为什么它在 int 开头使用前面的 0 来执行此操作,并且有没有办法阻止它以便0110至少等于110
其次有没有办法保持它以便0110返回0110
如果您对变量名称进行猜测,我将尝试在 24 小时内进行操作,但此时 1000 之前的任何时间都会因此导致问题。

提前致谢!

Vla*_*cow 6

从 0 开始的整数文字定义了八进制整数文字。现在在 C++ 中有四类整数文字

integer-literal:
    decimal-literal integer-suffixopt
    octal-literal integer-suffixopt
    hexadecimal-literal integer-suffixopt
    binary-literal integer-suffixopt
Run Code Online (Sandbox Code Playgroud)

八进制整数文字定义如下

octal-literal:
    0 octal-literal
    opt octal-digit
Run Code Online (Sandbox Code Playgroud)

也就是从0开始。

因此这个八进制整数文字

0110
Run Code Online (Sandbox Code Playgroud)

对应下面的十进制数

8^2 + 8^1 
Run Code Online (Sandbox Code Playgroud)

那等于72.

通过运行以下简单程序,您可以确定八进制表示形式的 72 等于 110

#include <iostream>
#include <iomanip>

int main() 
{
    std::cout << std::oct << 72 << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是

110
Run Code Online (Sandbox Code Playgroud)