Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.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++ 为什么uint32的结果会自动变成八进制数? intmain() { uint32_t n1=0000000000000000000000 1000; uint32_t n2=000000000000000000000000100; cout_C++_Uint32 T - Fatal编程技术网

C++ 为什么uint32的结果会自动变成八进制数? intmain() { uint32_t n1=0000000000000000000000 1000; uint32_t n2=000000000000000000000000100; cout

C++ 为什么uint32的结果会自动变成八进制数? intmain() { uint32_t n1=0000000000000000000000 1000; uint32_t n2=000000000000000000000000100; cout,c++,uint32-t,C++,Uint32 T,以0开头的数字文字表示您希望将其解释为八进制,这就是我假设您使用“八进制”时的意思,这是一个我以前从未见过的单词,虽然它看起来是一个真实的单词,但如果您使用它,您可能会得到一些空白的凝视:-) 此八进制处理符合标准,C++11 2.14.2整数文本/1: 八进制整数文字(以8为基数)以数字0开头,由一系列八进制数字组成 对于二进制数,最简单的方法可能是位移位(C++14之前): 当然,经验丰富的程序员可以立即从二进制映射到十六进制,因此可能只需使用: uint32_t n1 = 0b000000

0
开头的数字文字表示您希望将其解释为八进制,这就是我假设您使用“八进制”时的意思,这是一个我以前从未见过的单词,虽然它看起来是一个真实的单词,但如果您使用它,您可能会得到一些空白的凝视:-)

此八进制处理符合标准,
C++11 2.14.2整数文本/1

八进制整数文字(以8为基数)以数字0开头,由一系列八进制数字组成

对于二进制数,最简单的方法可能是位移位(C++14之前):

当然,经验丰富的程序员可以立即从二进制映射到十六进制,因此可能只需使用:

uint32_t n1 = 0b00000000000000000000000000001000;
uint32_t n2 = 0b00000000000000000000000000000100;

这是因为前导
0
的数字被认为是八进制数:

uint32_t n1 = 0x00000008;
uint32_t n2 = 0x00000004;
在C++14及更高版本中,如果要指定二进制数,必须使用
0b
前缀:

auto num = 04; //Octal number
如果不能使用C++14,则必须使用位移位或类似的技术来获得所需的结果


对于十进制数,您必须去掉前导的
0
s.

注意,二进制表示法需要C++14或更高版本。@RemyLebeau True,补充道:)感谢不是所有的数字,只是整数文本。您在哪里要求计算机将其解释为二进制?我没有意识到这是一个我能理解的八进制文本,但为什么你不期望十进制吗?
uint32_t n1 = 0x00000008;
uint32_t n2 = 0x00000004;
auto num = 04; //Octal number
uint32_t n2 = 0b00000000000000000000000000000100;
              ^^