. 执行下面C语言序列后,变量b的值是( )。

Int a,b,c; a=b=c=1; ++a||++b&&++c;
(A)错误 (B)0 (C) 2 (D) 1

答案应该是D,a=b=c=1是将a,b,c都赋值为1,
C(C++)中的||和&&具有短路运算性质,本题中当++a为真时,就不再执行后边的++b了
还要注意C运算符的结合性,||和&&都是从左向右结合的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-19
D,因为||运算符执行的时候,只要前面为真,后面就不执行了,而++a执行后,a为2,显然为真,则++b&&++c并不执行,因此b为1.
第2个回答  2014-03-18
abc分别赋值为1后,因为&&优先级大于‖,所以先执行abc分别自加1,再执行&&, 综上,b==2.