【发布时间】:2012-01-20 06:41:44
【问题描述】:
来自 k&R C
- 首先,如果任一操作数为 long double,则另一个将转换为 long double。
- 否则,如果任一操作数为双精度,则另一个将转换为双精度。
- 否则,如果任一操作数为浮点数,则另一个将转换为浮点数。
- 否则,对两个操作数都执行整数提升; ...
这意味着下面的表达式
char a,b,c;
c=a+b;
实际上计算为
c = char((int)a+(int)b);
这条规则背后的基本原理是什么?
如果 a、b 和 c 都很短,这些转换会发生吗?
【问题讨论】:
标签: c integer-promotion