C ++。为什么std :: cout<< char + int打印int值?

时间:2016-11-24 11:51:12

标签: c++ std cout

让我们说,我们有:

char x = 'a';
int y = 1;

所以,如果你跑:

std::cout << x + y;

它打印98而不是&#39; b&#39;。正如我从here看到的那样 <<operator只有 int 参数实现。

从现在开始,我有两个问题:

  1. char + int 操作后返回什么类型?
  2. 为什么没有 char 参数实现,但std::cout << x仍然按预期工作并打印 char 值?

2 个答案:

答案 0 :(得分:4)

感谢FefuxBo PerssonMatti Virkkunen答案为:

  1. 来自CPP Reference: Implicit conversions

      

    算术运算符不接受小于int的类型   参数和积分促销会在之后自动应用   左值转换(如果适用)。

    因此x + y的返回类型为 int

  2. std::cout operator<<(char)non-member

答案 1 :(得分:-3)

您可能知道,C ++向后兼容C。

C&amp; C ++将char视为int

您可能认为这是该语言的缺陷,但恰恰相反,这非常方便。

假设您要将大写字母转换为相应的小写字母。由于任何大写字母的ASCII码都低于相应的小写字母,因此这很简单:

char c = 'A';

std::cout << (char) (c + 32); // output: 'a'

反过来你可以从小写字母转换为大写字母:

char c = 'a';

std::cout << (char) (c - 32); // output: 'A'