来自 k&R C
- 首先,如果任一操作数为 long double,则将另一个操作数转换为 long double。
- 否则,如果任一操作数为双精度,则另一个将转换为双精度。
- 否则,如果任一操作数为浮点数,则另一个将转换为浮点数。
- 否则,对两个操作数执行积分提升;...
这意味着下面的表达式
char a,b,c;
c=a+b;
实际上被计算为
c = char((int)a+(int)b);
这条规则背后的理由是什么?
如果 a、b 和 c 都很短,这些转换会发生吗?