13.设变量 m,n,a,b,c,d均为以执行(m=a==)||(n=c==d)后,m,n的值是( ) A.0,0
, J ?0 j# V8 L B.0,1
$ M1 {" O$ a: o C.l,0
) N* b6 j3 k; i- J D.1,1" p, W u8 R6 q, U: O% w7 e0 `
【解析】计算(m=a==b)||(n=c==d)的过程是先计算逻辑或的左运算分量(m=a==b)的值,由于赋位运算符的优先级比关系运算符==的优先级低,又先计算 a==b。因 a,b均为0后,所以比较结果值为1。将1赋给变量m,使变量m的值变为1 。同时这个赋值运算的结果也是1,这样逻辑运算的左运算分量的值为1。由于逻辑或运算的左运算分量值为1,按照C语言对逻辑或运算优化计算的规定,不再计算逻辑或的右运算分量,而直接得到逻辑或运算的结果为1 。由于逻辑或的右运算分量不曾计算过,所以变量n的值也不为变化。这样,上述表达式计算后,变量m的情为1,变量n的值为0。所以解答是C。 i W" H* c5 H0 s V/ u
【参考答案】C% M s0 u2 [& i' ~! J
14.设a为5,执行下列计算后,b的值不为2的是( )
2 N* k% q: [2 j6 d4 _8 o; { A. b=a/2
( z/ X% c1 S! _0 A B. b=6-(--a)- |) i4 X( q8 Y0 _
C. b=a%2
7 ~4 y' a! M7 y7 V
$ v/ f8 F% y, J D. b=a |