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

时间:2013-03-27 06:43:38

标签: 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;
}

产生的输出是:

☺
1

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

3 个答案:

答案 0 :(得分:8)

  

为什么两条线不同?

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

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

如果您想知道'1' - '0'给出int的原因,请参阅Addition of two chars produces int

答案 1 :(得分:1)

s2是char,'1' - '0'是int。

因此它键入char值1为smile,而int值为1。

答案 2 :(得分:1)

s2的类型为charstd::cout << s2将调用std::ostream::operator<<(char)来回显ASCII字符1(微笑);

&#39; 1&#39; - &#39; 0&#39;被解释为int值,因此将调用std::ostream::operator<<(int)并打印整数1。