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

C++编写整数反转代码预期输出'321'却得到6,存在什么问题?

问题分析
  • 逻辑错误:用整数加法代替了数字拼接
    代码中cout << num3 + num2 + num1 << endl;执行的是算术加法运算,123拆分得到的num1=1、num2=2、num3=3,相加结果自然为6,和你预期的数字顺序拼接效果完全不符。
  • 无效代码:static_cast<char>(num1, num2, num3)无任何实际作用
    一是逗号运算符在这里会忽略前两个参数,仅对最后一个参数num3做类型转换,且你没有将转换后的结果赋值给任何变量,这行代码不会影响后续任何逻辑;二是就算要把数字转为可显示的字符,也需要给数字加上ASCII码中'0'的偏移量,直接把整数1转char得到的是不可见的控制字符,不是可显示的'1'。
修复方案

适配三位数场景的快速修改

方式1:直接按顺序输出三个数字,不做加法

cout << num3 << num2 << num1 << endl;

方式2:计算得到反转后的整数再输出

int reverse_num = num3 * 100 + num2 * 10 + num1;
cout << reverse_num << endl;

任意位数整数反转的通用实现

如果需要适配任意长度的正整数反转,不要硬编码按位拆分,可以用循环取余的写法:

int number = 123;
int reverse_num = 0;
while(number > 0) {
    reverse_num = reverse_num * 10 + number % 10;
    number = number / 10;
}
cout << reverse_num << endl;

内容的提问来源于stack exchange,提问作者Corin-2

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:54:05