C/C++中两个字符的总和

Mah*_*rak 8 c c++

在C/C++中,当我想找到两个字符的总和时 - 我得到int的结果.
例如:

#include <stdio.h>
int main(){
   char a = 'a', b = 'b';
   printf("%d + %d = %d\n", sizeof(a), sizeof(b), sizeof(a + b));
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

打印

1 + 1 = 4
Run Code Online (Sandbox Code Playgroud)

为什么?

Lee*_*ker 17

因为虽然ab各自类型的char,所述表达a + b是类型的int.无论何时使用char类型进行数学运算,在进行实际计算之前都会将它们转换为int.

  • 因为标准是这样说的.还有什么其他原因? (10认同)
  • 他知道.他在问*为什么*. (2认同)
  • 标准以这种方式定义它肯定是有原因的;) 看看[这个链接](http://eli-project.sourceforge.net/c_html/c.html#s6.2.1.1)(或我的/下面的其他答案)以获取有关积分促销的更多信息。我怀疑,标准定义这一点的原因是性能:它在仅定义 32b 或 64b 本机整数类型的体系结构上节省了额外的屏蔽和标志提升指令。 (2认同)