C语言数据类型题double和float区别
因为sqrt函数的声明为
double sqrt(double x);
而你的表达式是18/4*sqrt(4.0)/8,
其中18,4,8这几个数是整型,而sqrt(4.0)返回的是double型,根据C语言中的转换法则(PS:这个相信你也清楚,我就不多说了),计算出来的结果当然为double型
在进行运算时,不同类型的数据要先转换成统一类型,然后进行运算。转换的规则按下图所示:
double←float
long
unsigned
int ← charshort
箭头方向只表示数据类型级别的高低,由低向高转换。
1。横向向左的箭头表示必定的转换,如字符数据必定转换为整数,short型转换为int型,float型数据在运算时一律先转换成双精度型,以提高与暗算精度,即使是两个float型数据相加,也先化成double型,然后再相加;
2。
纵向箭头表示当运算对象为不同类型时转换的方向,例如int型与double型数据进行运算,先将int型的数据装换成double型,然后在两个同类型(double型)数据间进行运算,结果为double型。
换言之,如果有一个数据是float或double型,则另一数据要先转换为double型,运算结果为double型。
由上可知,最终的结果为double型!。
你可能想看: