You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 05:35:50