混合运算中long int可自动转换为float和double类型?
来源:2-17 C++类型转换
FANGYUAN_
2018-12-17 06:07:05
float是4个字节,double是8个字节
long int是8个字节。
为啥混合运算中long int可自动转换为float和double类型?
1回答
在程序运行中,变量的数据类型是可以转换的,你说的情况属于自动转换。自动转换发生在不同数据类型的量运算时,由编译系统自动完成。
1、自动转换遵循的规则
(1)若参与运算的量的数据类型不同,则先转换成同一类型,然后进行运算。
(2)转换数据始终往长度增加的方向进行,以确保精确度,如int和long运算,则将int转换为long再运算。
(3)所有的浮点运算都是以双精度(double)进行的,即使仅含有float变量的运算式,也要先转换为double再运算。
(4)char型和short进行运算时,要先转换为int型。
(5)在赋值运算中,赋值号两边的数据类型不同时,将赋值号右边的数据类型转换成左边的类型,结果是如果右边量的数据长度长于左边长度,会使一部分数据丢失,会降低精度,丢失的部分四舍五入。
2、自动转换的运算规则
float →→→→→ double 高级类型
↑
↑ ↑
long ↑
↑ ↑
↑ ↑
unsigned ↑
↑
↑
char,short →→→→→ int 低级类型
相似问题