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

为何输出不是00706?C++前置零整数输出异常问题

为什么C++中以0开头的整数输出不是带前导零的数字?

这事儿其实是C/C++的整数字面量规则在起作用——只要你给整数加了前缀0,编译器就会把它当成八进制数(基数为8)来处理,而不是你以为的带前导零的十进制数。

具体到你的代码:

你写的int a = 0706;,这里的0706是八进制数,转换成十进制的计算过程是这样的:

7 * 8² + 0 * 8¹ + 6 * 8⁰ = 7*64 + 0 + 6 = 448 + 6 = 454

所以变量a实际存储的是十进制的454,输出自然就是454了,不管你加多少个前导零,八进制的数值本质没变,转十进制还是454。

如果想要输出带前导零的数字怎么办?

如果你希望输出00706这种格式,得用输出格式控制来实现,比如:

  • 用printf的格式化输出:
    printf("Hello%05d\n", a);
    
  • 用C++的cout配合格式操纵符:
    #include <iostream>
    #include <iomanip> // 需要包含这个头文件
    using namespace std;
    int main() {
        int a = 706; // 这里用十进制就好
        cout << "Hello" << setw(5) << setfill('0') << a << endl;
    }
    

这样就能输出带前导零的Hello00706了。

内容的提问来源于stack exchange,提问作者Ali Hasan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:31:32