如何使用 Base 8(八进制)数字?

Sha*_*dow 1 c++ octal

在 C++ 中,一个八进制数是通过在它前面加上一个0,来定义的,例如:

01 = 1
010 = 8
014 = 12
Run Code Online (Sandbox Code Playgroud)

所以我正在试验如何在 c++ 中使用 Base 8,并尝试使用循环添加它,如下所示:

int base8Number = 00;
for (int i = 01; i < 011; i+=01)
{
    base8Number += i;
    cout << base8Number << '\n';
}
Run Code Online (Sandbox Code Playgroud)

显然,C++ 不喜欢使用八进制数,我得到的输出如下:

1
3
6
10
15
21
28
36
Run Code Online (Sandbox Code Playgroud)

我知道它在 Base 8 中不起作用的最明显的原因是28结果输出,因为该8数字未在 Base 8 中使用。

所以,我的问题是:你可以在 c++ 中使用 Base 8,还是只是打算用作常量,如果你可以在 c++ 中使用 Base 8,你怎么做?

Bil*_*nch 5

首先,让我们记住,当我们按照您的方式打印数字时,它们将以十进制显示。

现在,让我们在不使用八进制的情况下重写您的代码:

int base10Number = 0;
for (int i = 1; i < 9; i+=1)
{
    base10Number += i;
    cout << base10Number << '\n';
}
Run Code Online (Sandbox Code Playgroud)

所以现在让我们看看你的代码实际上在做什么:

cout << 1             << "\n"; // 1
cout << 1 + 2         << "\n"; // 3
cout << 1 + 2 + 3     << "\n"; // 6
cout << 1 + 2 + 3 + 4 << "\n"; // 10
....
Run Code Online (Sandbox Code Playgroud)

这就是你所看到的。所以,八进制在 C++ 中的工作方式没有问题。

如果您愿意,可以使用std::octto tellstd::cout使用八进制打印。例如:

int main() {
    std::cout << std::oct << 25 << "\n"; // Outputs: 31
}
Run Code Online (Sandbox Code Playgroud)