简单C数据类型问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 03:54:33
float x,a,b;
int c=4;
a=38.4;b=6.4;
x=7/3+c*a/b+1/2;
printf("%f",x);
我算了结果为什么是27.500000
但是答案是27.000000
难道X不是等于3+24+0.5么?

就直接说x的运算过程吧,另外x=9/3 + c*a/b + 1 / 2吧?

根据运算顺序,首先计算的是这几个算式:

(1)9/3

(2)c*a/b

(3)1/2

其中算式(1)和(3)的运算符左右两边都是整形,导致该运算结果为整形3/0;

算是(2)运算符所有相关值均为float,在运算过程中将转化为double,获得24(double)

然后计算过程为

3(int)+24(double) + 0(int)

此时全部转化为double进行计算,结果为27(double),最终转换为27(float)

类型转换在每个二元计算符计算时都会考虑,而并不是最终结果是什么类型就一定会转换为该类型

7/3==3?????

等于2.333333吧