减去两个字符并将它们添加到字符串中

197*_*197 4 c++

#include <iostream>
#include <string>

int main() { 
    char s2;
    s2 = '1' - '0';
    std::cout << s2;
    std::cout << std::endl;
    std::cout << '1' - '0';
    std::cin >> s2;
}
Run Code Online (Sandbox Code Playgroud)

产生的输出是:

?
1
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么两条线不同?我期待并希望两个结果都是1.根据我的理解,它们应该是相同的,但这显然是错误的,有人可以向我解释一下吗?谢谢

NPE*_*NPE 8

为什么两条线不同?

第一个表达式(s2)的类型是char.第二个('1' - '0')的类型是int.

这就是为什么即使它们具有相同的数值,它们也会以不同的方式呈现1.第一个显示为ASCII 1,而第二个显示为数字1.

如果你想知道为什么'1' - '0'给出一个int,请参阅添加两个字符产生int