混合运算中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回答

Tender10

2018-12-17

在程序运行中,变量的数据类型是可以转换的,你说的情况属于自动转换。自动转换发生在不同数据类型的量运算时,由编译系统自动完成。

1、自动转换遵循的规则

(1)若参与运算的量的数据类型不同,则先转换成同一类型,然后进行运算。
(2)转换数据始终往长度增加的方向进行,以确保精确度,如int和long运算,则将int转换为long再运算。
(3)所有的浮点运算都是以双精度(double)进行的,即使仅含有float变量的运算式,也要先转换为double再运算。
(4)char型和short进行运算时,要先转换为int型。
(5)在赋值运算中,赋值号两边的数据类型不同时,将赋值号右边的数据类型转换成左边的类型,结果是如果右边量的数据长度长于左边长度,会使一部分数据丢失,会降低精度,丢失的部分四舍五入。
2、自动转换的运算规则
float →→→→→ double 高级类型

↑ ↑
long ↑
↑ ↑
↑ ↑
unsigned ↑


char,short →→→→→ int 低级类型

0

0 学习 · 593 问题

查看课程