float int的 混合运算所得 的 值的类型
供稿:hz-xin.com 日期:2025-01-14
若将int,long,float等类型的数据进行混合运算,其结果的数据类型是什么?为什么?
double<---float
↑
long
↑
unsigned
↑
int<--char、short
在做运算的时候,自左向右的方向是由编译系统自己完成而且一定完成的转换。也就是char和int做运算结果一定是int类型的。
而自下而上的转换看表达式,如果int和long做运算,则int转成long,最后结果是long类型。
如果int和float运算,先有float到double,再由int到double。最后结果是double。
至于int是16位还是32位,取决于系统。现在基本都是16位。
这个和编译器和C的版本都有关系。基本转换是这样的。
double<---float
↑
long
↑
unsigned
↑
int<--char、short
在做运算的时候,自左向右的方向是由编译系统自己完成而且一定完成的转换。也就是char和int做运算结果一定是int类型的。
而自下而上的转换看表达式,如果int和long做运算,则int转成long,最后结果是long类型。
如果int和float运算,先有float到double,再由int到double。最后结果是double。
至于int是16位还是32位,取决于系统。现在基本都是16位。
是float float是32位 int只有16位 强制转换为float
强制转化为float
float的精度比int高
float
运算结果会是参与运算参数类型中表示范围最大的那一个
一个int 和一个double类型运算结果回事double的,因为double表示的数值范围比int大
同理
int,long,float一起运算,结果会是float类型的
C51支持的数据类型就是标准C的基础数据类型即是:char,unsigned char,int,unsigned int,long,unsigned long,float,double还有是专为单片机使用的数据类型:bit,sbit 这些都不用刻意的去死记硬背,写程序的时候就会自然记得了 至于类型转换,不同的编译器转换顺序不是都一样的尽量把数据预先转成一样再进行运算
这个和编译器和C的版本都有关系。基本转换是这样的。double<---float
↑
long
↑
unsigned
↑
int<--char、short
在做运算的时候,自左向右的方向是由编译系统自己完成而且一定完成的转换。也就是char和int做运算结果一定是int类型的。
而自下而上的转换看表达式,如果int和long做运算,则int转成long,最后结果是long类型。
如果int和float运算,先有float到double,再由int到double。最后结果是double。
至于int是16位还是32位,取决于系统。现在基本都是16位。
这个和编译器和C的版本都有关系。基本转换是这样的。
double<---float
↑
long
↑
unsigned
↑
int<--char、short
在做运算的时候,自左向右的方向是由编译系统自己完成而且一定完成的转换。也就是char和int做运算结果一定是int类型的。
而自下而上的转换看表达式,如果int和long做运算,则int转成long,最后结果是long类型。
如果int和float运算,先有float到double,再由int到double。最后结果是double。
至于int是16位还是32位,取决于系统。现在基本都是16位。
是float float是32位 int只有16位 强制转换为float
强制转化为float
float的精度比int高
float