#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
。根据我的理解他们应该是一样的,但这显然是错误的,有人可以向我解释一下吗?谢谢
答案 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的类型为char
,std::cout << s2
将调用std::ostream::operator<<(char)
来回显ASCII字符1(微笑);
&#39; 1&#39; - &#39; 0&#39;被解释为int值,因此将调用std::ostream::operator<<(int)
并打印整数1。