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
相关产品推荐
相关产品推荐

