c语言中的一个题目

来源:百度知道 编辑:UC知道 时间:2024/06/05 03:53:48
设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行
(m=a>b)&&(n=c>d)后n的值为____。
A)1 B)2
C)3 D)4
这个题目错没错?
我觉得n 的为0,因为c>d为假.

这个题的答案是B n的值没有变
因为在这个表达式中 &&只有左右两边都为真的时候才为真
所以当程序运算到&&左边(m=a>b)的时候 因为a>b为假
又因为&&只要有一边的条件为假这个表达式就为假 所以当左边为假的时候程序就不再继续进行n=c>d的运算了 所以n依旧=2 如果表达式变为
(m=a<b)&&(n=c>d) 这样 n的值才会是0;

(m=a>b)==0
对于&&来说,如果前面一个式子为0,后面就不再比较了.
因此,n不变. n=2

B
m=a>b为假,n不变。

答案为B
&&来说,只要前面的为假,后面就不会再判断,a>b为假为0,而m=2,不等于0,所以前面为假,后面不再计算,所以结果为2