当然不是这样。在
c语言中,&&的
优先级比||高,所以当这两个一起出现的时候,是先算&&再算||,
当然,||在c语言也有个陷阱。就是当||的前半部分为真的时候,就不执行后半部,只有前半部分为假的时候才执行后半部分。
本题中:a=b=c=1;
于是a,b,c的值都是1,
++a||++b&&++c;
中,&&的优先级高,所以先算++b&&++c,
再跟++a做||运算。
于是++a是||的前半部分。而++a的值此时是2,a的值就是2,即为真。于是就不做后半部分的运算。
也就没有++b&&++c的运算。于是b,c的值还是都为1.
这下明名为什么是a=2
b=1
c=1,而不是a,b,c都为2的原因了吧。