某些二元运算符将其操作数的类型转换为普通类型,这也是结果的类型。下面这些转换称为常见算术转换:
如果两个操作数中的任何一个操作数的类型为 long double,则另一个操作数的类型转换为 long double。
另外,如果两个操作数中的任何一个操作数的类型为 double,则另一个操作数的类型转换为 double。
另外,如果两个操作数中的任何一个操作数的类型为 float,则另一个操作数的类型转换为 float。
另外,对两个操作数执行整型提升。然后,应用以下规则:
如果两个操作数中的任何一个操作数的类型为 unsigned long long int,则另一个操作数的类型转换为 unsigned long long int。
如果两个操作数中的任何一个操作数的类型为 long long int,则另一个操作数的类型转换为 long long int。
如果两个操作数中的任何一个操作数的类型为 unsigned long int,则另一个操作数的类型转换为 unsigned long int。
另外,当仅在 SPARC V9 上进行编译并指定了 cc -xc99=none 时,如果一个操作数的类型为 long int 而另一个操作数的类型为 unsigned int,则两个操作数的类型均转换为 unsigned long int。
另外,如果两个操作数中的任何一个操作数的类型为 long int,则另一个操作数的类型转换为 long int。
另外,如果两个操作数中的任何一个操作数的类型为 unsigned int,则另一个操作数的类型转换为 unsigned int。