ANSI C中的整型升级
char,short int或者int型位段(bit-field),包括它们的有符号或无符号变型,以及枚举类型,可以使用在需要int或unsigned int的表达式中,如果int可以完整地表示源类型的所有值,那么该类型的值就转换为int,否则转换为unsigned int。
ANSI C中的寻常算术转换
当执行算术运算时,操作数的类型如果不同,就会发生转换。
数据类型一般朝着浮点精度更高、长度更长的方向转换,整型数如果转换为signed不会丢失信息,就转换为signed,否则就转换为unsigned。
这个称为值保留(value preserving)原则,与K&R C所采用的无符号保留(unsigned preserving)原则不同。
浮点类:
如果一个操作数的类型是long double,那么另一个操作数无论是什么类型都将被转换成long double。
如果两个操作数都不是long double型,那么当其中一个操作数的类型是double型,则另一个就将被转换成double 型。
如果两个操作数都不是double型,而其中一个操作数是float型,则另一个被转换成float型。
注意:double和float都不可用unsigned,short修饰,另外float还不可用long修饰。
责任编辑:小草