当赋值运算符两侧的数据类型不同时,需进行类型转换,这种转换是系统自动进行的,转换规则如下:
1)float、double型赋值给int型:直接截断小数。
例如,“int i=f+06;”,f的值为40,右边算术表达式运算后的结果为46的double型数据,根据上述转换原则,直接舍弃小数,所以i的值为4。
2)int、char型赋值给float、double型:补足有效位以进行数据类型转换。
例如:“float f=4;”,float为7位有效数字,所以f的值为40000000。
3)char型(1字节)赋给int型(4字节):数值赋给int型的低8位,其它位补0。
4)long int型赋值给int型:long int型截断低字节给int型。
5)int型赋值给long int型:赋给long int型的低16位,如果int型的最高位是0,则long int的高16位全为0;如果int型的最高位是1,则long int型的高16位全为1(称为“符号扩展”)。
6)unsigned int型赋值给int型:直接传送数值。
7)非unsigned int型赋值给位数相同的unsigned int型:直接传送数值。