在 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,你怎么做?
首先,让我们记住,当我们按照您的方式打印数字时,它们将以十进制显示。
现在,让我们在不使用八进制的情况下重写您的代码:
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)