帮帮忙,为什么选B?设有定义:float a=2,b=4,h=3;,以下C语言表达式与代数式计算结果不相符的是( )

来源:百度知道 编辑:UC知道 时间:2024/06/08 07:42:45
设有定义: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)

因为你已经定义了a,b,h为单精度浮点型,所以,就要考虑到精度问题了。
下面几个选项中,根据运算优先级,就B选项中,是先算1/2(因为C++中,你的常数要有小数部分才是浮点型,你可以验证下:

int main()
{
float i;
i=1/2;
cout<<i<<endl;
}
输出的结果是0)

也就是说,1/2是整型运算,你的代数式计算是0.5,但整型的精度限制,结果只能是0;如果B选项改为(1.0/2)*(a+b)*或者(1/2.0)*(a+b)*h都能得到正确的结果。

1/2=0

因为整型之间的运算还得整形,整形与实型运算就是实型,你一题去往下算,ACD都得整型,只有B项(1/2)得0,结果是0,因为整型运算得整型,算术结果是9。

/是整除符号 是不看余数的 1/2=0