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

C++中字符串字符相加结果异常:预期3却输出99

问题原因与解决方案

你的代码直接对字符串中的字符做加法运算,实际计算的是两个字符的ASCII码值之和,而非数字本身的和。

在ASCII编码里,字符'1'的ASCII值是49,字符'2'的ASCII值是50,49+50=99,这就是你得到输出99的原因。

要得到预期的数字相加结果,需要把字符转换为对应的整数——利用数字字符在ASCII表中连续排列的特性,每个字符减去字符'0'即可:

  • '1' - '0' = 1(49-48=1)
  • '2' - '0' = 2(50-48=2)

修改后的代码如下:

#include<iostream>
using namespace std;

int main()
{
    string s="145245";
    cout << (s[0] - '0') + (s[3] - '0');
    return 0;
}

运行这段代码就会输出预期的3。

内容的提问来源于stack exchange,提问作者Vivek Kedia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 00:52:38