在C语言的表达式中,如果一个运算符的各个操作数的类型不同,那么编译器就必须进行隐含的数据类型转换。
C语言按照一定的规则(通常被称为正常算术转换,即Usual Arithmetic Conversion)来进行类型转换。转换顺序是(由右往左转换):
double <-- float <-- unsigned long <-- long <-- unsigned int <-- int
也就是说,如果表达式中有一个操作数的排名比较靠后,那么首先应该将这个操作数转换成更靠前的那个类型再进行运算。
简单记忆方法就是: 有符号变成无符号,短类型变为长类型。