设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型是什么,多谢各位大
表达式结果是双精度类型。
在C语言中,若参与运算量的类型不同,则先转换成同一类型,然后进行运算。转换按数据长度增加的方向进行,以保证精度不降低。
浮点型数据:
1、float型:编译系统为每一个float型变量分配4个字节,数值以规范化的二进制数指数形式存放在存储单元中。
2、double型:为了扩大能表示的数值范围,用8个字节存储一个double型数据,可以得到15位有效数字。
扩展资料:
浮点型从狭义上说就是科学记数法。双精度,即 double 。 double有二,两个的意思。
C 标准要求 float 类型精度7位,并且整数部分的表示范围至少要达到 -1.0E37 -- 1.0E+37 。float 一般是 32 位的。C 标准规定double类型的整数部分的最小表示范围和float 一样。
都是 -1.0E37 到 1.0E+37,但是它要求 double 类型精度15 位 ~16位。double 通常是 64 位的。输出double float类型的控制符为%lf。
参考资料来源:百度百科-双精度浮点型
表达式结果是双精度类型。
在C语言中,若参与运算量的类型不同,则先转换成同一类型,然后进行运算。转换按数据长度增加的方向进行,以保证精度不降低。
因此,在表达式中,10+'a'+i*f,当10+'a'时,'a'字符型会自动转换为整型,i*f运算时自动转换为双精度类型,10+'a'+i*f表达式结果自动转换为双精度类型。
扩展资料:
自动类型转换的相关规则:
1、所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。
2、在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度,丢失的部分直接舍去。
3、执行算术运算时,低类型(短字节)可以转换为高类型(长字节);例如: int型转换成double型,char型转换成int型等等。
参考资料来源:百度百科-强制类型转换