为何C++代码输出数字而非预期字符串?该数字含义是什么?
字符相加输出数字而非字符串的原因及解决方法
为什么输出数字而非字符串?
在C++中,char类型本质是8位整数类型,它存储的是字符对应的ASCII码值。当你执行text[0] + text[text.length()-1]时,两个char会被自动提升为int类型进行算术加法运算,而非字符串拼接。
数字138代表什么?
以你代码中的字符串"ASCII"为例:
- 首字符
'A'的ASCII码值是65 - 尾字符
'I'的ASCII码值是73
两者相加的结果是65 + 73 = 138,这就是你看到的输出数字。更换字符串索引时,不同字符对应不同的ASCII值,相加结果自然会变化。
如何得到预期的"AI"输出?
有两种简单的实现方式:
- 直接依次输出两个字符
#include <iostream> #include <string> using namespace std; int main(){ string text = "ASCII"; cout << text[0] << text[text.length()-1]; }
- 拼接成字符串后输出
#include <iostream> #include <string> using namespace std; int main(){ string text = "ASCII"; string result; result += text[0]; result += text.back(); // 等价于text[text.length()-1] cout << result; }
内容的提问来源于stack exchange,提问作者ALIN
相关产品推荐
相关产品推荐

