char == char是否将两个操作数都隐式转换为int?

时间:2019-01-01 16:31:30

标签: c++

我正在使用德语丛书“ C ++-DasÜbungsbuch”的副本来提高我的C ++技能; 5. mitp 中的Auflage

练习8.1提出了以下问题(翻译并简化为相关内容):

  

8.1 给出以下定义:

     

char c = 'q';

     

确定在评估以下语句期间将操作数转换为的类型:

     

a) c == 'Q'

我的答案应该是char,因为c被声明为char,据我所知,'Q'是一个字符文字。但是,该解决方案指出:

  

a)这两个操作数的类型都将转换为int

这使我感到困惑。确实是这样的情况:将char == char比较隐式转换为int == int,为什么要这样做?如果问题是

  

a) c == 82

我本可以理解,82将被解释为整数常量,因此c也将被转换为int,但是答案明确提到了两者 要转换的操作数。

有人可以向我解释一下吗?

2 个答案:

答案 0 :(得分:5)

这本书谈论的是usual arithmetic conversion中的happens if both operands have arithmetic types(对于所有整数类型,包括char都是正确的)。这导致了integral promotion

答案 1 :(得分:-5)

我认为,它用于比较与您的角色相对应的ASCII码。 例如,它将q转换为113,将Q转换为81。 所以应该比较:

'Q'=='q' //81==113

由于C将字符解释为ascii表的编号,因此将它们强制转换为整数。 参见https://www.rapidtables.com/code/text/ascii-table.html