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

标签 c++ octal

在 C++ 中,八进制数是通过在其前面加上 0 来定义的,示例:

01 = 1
010 = 8
014 = 12

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

int base8Number = 00;
for (int i = 01; i < 011; i+=01)
{
    base8Number += i;
    cout << base8Number << '\n';
}

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

1
3
6
10
15
21
28
36

我知道它在 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';
}

那么现在让我们看看您的代码实际上在做什么:

cout << 1             << "\n"; // 1
cout << 1 + 2         << "\n"; // 3
cout << 1 + 2 + 3     << "\n"; // 6
cout << 1 + 2 + 3 + 4 << "\n"; // 10
....

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

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

int main() {
    std::cout << std::oct << 25 << "\n"; // Outputs: 31
}

关于c++ - 如何使用 Base 8(八进制)数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26458213/

相关文章:

c++ - xcb 鼠标移动导致输入滞后

c - 我将如何使用整数变量执行八进制算术?

python - 正则表达式和八进制字符

c - 八进制的指数表示法

c++ - STL迭代器相等性是如何建立的?

C# 垃圾收集 -> 到 C++ 删除

java - 基本本地方法的 UnsatisfiedLinkError

c++ - 迭代 vector

c++ - 如何在 C++ 中编写八进制浮点文字?

c - C语言中的位与