c语言问题不会,有点不懂……

4、设有定义:float a=2,b=4,h=3;,以下C语言表达式与代数式 计算结果不相符的是( )
A.(a+b)*h/2 B.(1/2)*(a+b)*h C.(a+b)*h*1/2 D.h/2*(a+b)答案 B

因为1/2的值为0啊这表示取整

因为1/2是0,一般’/‘的结果都是向下取整的,例如5/3就是1,2/3就是0;
但是如果分子分母中一旦有一方是含有小数类型的数据,例如3.5/5,结果就会是0.7,所以不同的情况会有不一样的结果

(1/2)是一个整数,要想得到一样的答案必须要把1改成1.0

由于a,b,h,都为float类型,在进行除法时会进行实数除法,而不是像1/2这样的整数除法。

B.(1/2)*(a+b)*h 1/2 这个是整数想除会等于 0。。