赋值中的强制类型转换
赋值中的类型转换 当 赋值运算符 两边的运算对象类型不同时,将要发生类型转换, 转换的规则是:把赋值运算符右侧 表达式 的类型转换为左侧 变量 的类型。具体的转换如下: (1) 浮点型 与 整型 ● 将浮点数(单双精度)转换为整数时,将舍弃浮点数的小数部分(是直接舍弃,编译器不会自动四舍五入), 只保留整数部分。将 整型 值赋给 浮点型 变量,数值不变,只将形式改为浮点形式, 即小数点后带若干个0。注意:赋值时的类型转换实际上是强制的。 (2) 单、 双精度浮点型 ● 由于C语言中的浮点值总是用双精度表示的,所以float 型数据只是在尾部加0延长为double型数据参加运算,然后直接赋值。double型数据转换为float型时,通过截尾数来实现,截断前要进行四舍五入操作。 (3) char型与int型 ● int型数值赋给char型 变量 时,只保留其最低8位,高位部分舍弃。 ● char型数值赋给int型 变量 时, 一些 编译程序 不管其值大小都作正数处理,而另一些编译程序在转换时,若char型数据值大于127,就作为负数处理。对于使用者来讲,如果原来char型数据取正值,转换后仍为正值;如果原来char型值可正可负,则转换后也仍然保持原值, 只是数据的内部表示形式有所不同。 (4) int型与long型 ● long型数据赋给int型 变量 时,将低16位值送给int型变量