C语言问题,解释一下为什么出的答案,谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/18 14:00:07
设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是
A)6.500000 B)6 C) 5.500000 D) 6.000000

以下选项中,与k=n++完全等价的表达式是以下合法的赋值语句是
A) k=n,n=n+1 B) n=n+1,k=n C) k=++n D) k+=n+1

第一题是D,(int)a==5,5+b/b==5+1.000000=6.000000;
第二题是a:注意++是后置的,所以是先把值给k再加;

1.D
(int)a=5 b/b=1.000000,int与double相加,结果为double
2.A
n++是先计算n的值再++

1.原式=(int)a + (b/b)=5 +1.000000,所以先D;
2.原式相当于先把n的值赋给k,再把n的值自加1;所以先A。

第一个应该是6首先安照double 型计算出来的应该是6.50000000但结果被int强制转化为整型.所以是6 第二个应该选k=n,n=n+1,因为n++是先运算然后下次n才会递增,就是说第一次的n值是不变.这个与++n经常放一起出题.要注意它们的不同

D A