#include
main()
{ int m=7,n=4;
float a=38.4,b=6.4,x;
x=m/2+n*a/b+1/2;
printf("%f/n",x);
}
为什么是27.000000,我求出来是28.000000,为什么1/2不参加运算,求指导。
回答:
因为程序的m/2中,m与2都是整形,它的结果也是整形
所以当m=7时,m/2=7/2=3而不是3.5
而1/2同样,结果为0
所以正确的写法
x = m / 2.0 + n * a / b + 1.0 / 2;
问题:若int x=1,y=0; 则表达式 ( y == x>>1 ) ? ++ x/++ y : ++ x 的运算结果是什么?
回答:
先计算 x>>1,因为x=1,所以结果为0;
再计算y==(x>>1),结果相等
所以表达式值执行 ++x/++y;
因为是先++,所以先计算x=x+1=2 y=y+1=1
再计算2/1结果表达式的值为2
最终
x=2 y=1 表达式值为2