我只能说这种题目都是2的,根据每个编译器的不同运算次序是不同的,出来的答案无法保证,一般不使用复杂的自加自减运算,按左右顺序的话答案是C没错正如楼上2为讲的先做++a然后就不算了,编译器不同答案不同
|| 为短路或(| 为逻辑或),短路或的特点是当前面条件为真时整个句子必然为真,所以不再判断后面的条件是否成立(后面的条件直接跳过),短路或在程序执行过程中可以节省一部分时间,所以很常用。
所以题中++b没有执行,所以答案为C
++a|| ++b && ++c
在上述逻辑表达式中计算机执行++a后没有继续执行++b
所以a=a+1 而b还是b=1;
计算机之所以后面没有执行,因为在逻辑表达式求解时,只有在必须执行下一个逻辑运算符才能求出表达式的解。
该题目中只有++a为假(0)时才执行++b,因为++a为真所以对于“||”左边为真右面就不用执行
首先a,b,c都为1
然后计算++a|| ++b && ++c;
先算++a,值为2,也就是为真
所以不用运算++b && ++c
得到结果是a为2,b和c都为1
这涉及到或运算和与运算的知识点,百度下就知道了
a=b=c=1;执行完后a=1,b=1
++a||++b&&++c 这里先执行++a使得a=2了,然后这个表达式已经成立,不会再执行后面的||++b&&++c了,所以a=2,b=1