Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;前面为0的int将更改整个值_C++_Variables - Fatal编程技术网

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

C++ C++;前面为0的int将更改整个值,c++,variables,C++,Variables,我有一个非常奇怪的问题,如果我像这样声明一个int int time = 0110; 然后将其显示到控制台,返回值为72。但是,当我删除前面的0时,使int time=110然后控制台显示预期的110 有两件事我想知道,首先,为什么它在int开头使用前一个0,并且有没有办法阻止它,使0110至少等于110?其次,有没有办法保持它,使0110返回0110? 如果你猜一猜变量名,我试着用24小时的时间进行操作,但是在这一点上,1000之前的任何时间都会因此而导致问题 提前谢谢 开始时为零表示数字为

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

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

有两件事我想知道,首先,为什么它在int开头使用前一个0,并且有没有办法阻止它,使
0110
至少等于
110

其次,有没有办法保持它,使
0110
返回
0110

如果你猜一猜变量名,我试着用24小时的时间进行操作,但是在这一点上,1000之前的任何时间都会因此而导致问题


提前谢谢

开始时为零表示数字为八进制。没有它是十进制的。

编译器将前导零解释为八进制数。“110”的八进制值是十进制的72。如果只是存储一个int值,就不需要前导零


您正试图存储时钟上显示的“时间”。这实际上比一个简单的整数更复杂。你可以存储从午夜开始的分钟数

从0开始的整数文本定义了八进制整数文本。现在C++中有四种整数字类< /p>
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 in八进制表示等于110

#include <iostream>
#include <iomanip>

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

    return 0;
}

这是因为整数文本。将
0
放在数字之前意味着它是一个八进制数。对于二进制,它是
0b
,对于十六进制,它是
0x
0x
。你不需要为十进制写任何东西。参见下面的代码

#include<stdio.h>

int main()
{
    int binary = 0b10;
    int octal=010;
    int decimal = 10;
    int hexa = 0x10;
    printf("%d %d %d %d\n", octal, decimal, hexa, binary);
}
#包括
int main()
{
int binary=0b10;
int八进制=010;
整数小数=10;
int hexa=0x10;
printf(“%d%d%d%d\n”,八进制、十进制、十六进制、二进制);
}

有关更多信息,请访问。

可能重复的可能重复的可能重复的我如何将其保存为变量?@SteppingHat您可以使用任何整型变量来容纳此值。。变量的值将不取决于在源代码中如何写入整型文字。
#include<stdio.h>

int main()
{
    int binary = 0b10;
    int octal=010;
    int decimal = 10;
    int hexa = 0x10;
    printf("%d %d %d %d\n", octal, decimal, hexa, binary);
}