1. 首页 / 知识 /  正文

C语言数据类型题double和float区别

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型!。