gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 00:49:08 25 4
gpt4 key购买 nike

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

int time = 0110;

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

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

提前致谢!

最佳答案

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

integer-literal:
decimal-literal integer-suffixopt
octal-literal integer-suffixopt
hexadecimal-literal integer-suffixopt
binary-literal integer-suffixopt

八进制整数字面量定义如下

octal-literal:
0 octal-literal
opt octal-digit

也就是从0开始

因此这个八进制整数文字

0110

对应后面的十进制数

8^2 + 8^1 

等于 72

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

#include <iostream>
#include <iomanip>

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

return 0;
}

输出是

110

关于前面为 0 的 C++ int 会更改整个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29325822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com