比方说,我们有:
char x = 'a';
int y = 1;
所以,如果你运行:
std::cout << x + y;
它打印 98 而不是 'b'。正如我所见here http://www.cplusplus.com/reference/ostream/ostream/operator%3C%3C/
<<operator
只有int参数实现。
从现在开始我有两个问题:
- After 字符+整数操作返回什么类型?
- 为什么没有char参数实现,但是
std::cout << x
仍然按预期工作并打印char value?
谢谢Fefux /users/7131047/, 博佩尔松 /users/597607/ and 马蒂·维克库宁 /users/227267/答案是:
-
From CPPReference:隐式转换 http://en.cppreference.com/w/cpp/language/implicit_conversion:
算术运算符不接受小于以下的类型int
作为
参数和积分促销将在之后自动应用
左值到右值的转换(如果适用)。
所以返回类型为x + y
is int
.
std::cout
has a operator<<(char)
as a 非会员 http://www.cplusplus.com/reference/ostream/ostream/operator-free/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)