我们管这个叫”短路“求值
即,if中的这个表达式如果是 exp1 || exp2 ,如果exp1值为1,那不管exp2计不计算整个表达式的值都为1,所以编译器优化后exp2就不计算了
同理exp1 && exp2 如果exp1的值为0 ,exp2也不计算了
此题,++a 大于0 ,因此第二个表达式不计算, ++c也执行了
就是你说的结果
++a=1>0为真,即为1,||后面的内容就不用看了,故++b没有执行,仍为b=0;if条件为真,执行++c,故c=1
输出结果为:
1,0,1 而不是101
++a>0 a=1,因而该判断正确,由于或关系,无论++b>0是否正确,都不影响if的判断,因而不再计算++b>0,所以b仍然=0;++c后c=1