uint32_t变量赋值为00000000000000000000000000001011时为何值为521?
代码输出结果为521的原因
这段C++代码的核心问题出在整数字面量的进制解析规则上:
uint32_t number = 00000000000000000000000000001011; std::cout << number;
- 在C++标准中,以
0开头的整数字面量会被编译器当作八进制数处理,而非你预期的二进制数。 - 你写的
00000000000000000000000000001011本质是八进制的1011,将其转换为十进制的计算过程为:1*8³ + 0*8² + 1*8¹ + 1*8⁰ = 512 + 0 + 8 + 1 = 521 - 因此
std::cout最终输出的就是这个十进制结果521。
如果需要表示二进制字面量,C++11及后续标准支持以0b或0B开头的写法,比如0b1011,此时输出的十进制值就是11。
内容的提问来源于stack exchange,提问作者Gevv
相关产品推荐
相关产品推荐

