c语言的类型转换有 自动类型转换 跟 强制类型转换。
自动类型转换:当几个数据类型不同的数据进行运算时,低精度的数据会自动向高精度数据转换,然后再进行运算。但是,自动类型转换在编译器中编译时会有警告(不影响程序的运行)。
强制类型转换:将高精度的数据强制转换为低精度数据,但是会带来精度损失。转换格式为: (类型名)变量值。
如上图所示,vChar为一个字节,可表示的范围为0-255;
vShort为两个字节,可表示的范围为0-65535;
这两个值可表示的最大值都要小于vFloat的值,那么在转换的时候就会造成精度损失。
vChar的转换过程是将vFloat的值转换为二进制后,取其后八位。如图
vShort的转换过程同vChar,取vFloat的后十六位。如图