C语言 需要执行普通算术转换的运算符
什么是普通算术转换?
许多的运算符在进行运算时,需要为两个操作数确定一个公共类型,将它们提升至此公共类型,然后再进行运算,产生的结果也是此公共类型的。这种模式称为普通算术转换。例如一个 long double 操作数和一个 double 操作数相加,需要将 double 操作数提升为 long double,然后再相加并产生一个 long double 的运算结果。
关于普通算术转换的具体规则,请参考本人的另一篇博文C99标准 类型转换(算术操作数篇)(中文翻译)。
执行普通算术转换的运算符
以下运算符可能导致操作数执行普通算术转换:
-
乘法运算符(总是执行):
*
/
% -
加法运算符(当两个操作数均为算术类型时执行):
+
- -
关系运算符(当两个操作数均为算术类型时执行):
<
>
<=
>= -
等式运算符(当两个操作数均为算术类型时执行):
==
!= -
按位与运算符(总是执行):
& -
按位异或运算符(总是执行):
^ -
按位或运算符(总是执行):
| -
条件运算符(当两个操作数均为算术类型时执行):
? :