初始化 b=8
在d2=(a>b)&&(++a==5)||(c>b--);中,虽然所有条件都不成立,
但c>b-- 这一公式还是照样运行,b的值减少了1,所以b=7;
程序里并没有运行过++a;
在d1=(ab--)中,运行到a在d2=(a>b)&&(++a==5)||(c>b--),由于a>b不成立,而导致++a==5这一条件无需判断;
的d4同d2;)
所以a依然不变
程序都运行过++a为什么a输出的结果仍为4呢?
d1=(ab--);
||的优先级相同,执行到||就没有执行了,因为a第一个:d3输出的时候为什么b=7。是怎么算出来的?
d3=(ab--);
&&的优先级大于||所以先执行c>b--所以就会有b=7的结果。
希望对你有用吧!
第一个为什么b=7 因为在(c>b--)的时候,b做了自减运算所以b=7;
第二个为什么程序都运行过++a为什么a输出的结果仍为4 因为在计算机做判断的时候对于&&运算只要第一个不满足,就不会计算后面的式子,对于||运算只要前面的满足条件就不计算后面的式子,所以你的++a一次都没有被计算过,所以a仍为4
注意关系符号的运算,当为“&&”或“||”时,从左向右一旦遇到表达式值为0或1的,后面的就不再运行了。比如:d1=(ab--),因为ab--)的值就为1了,后面的就不算了。不知道我说清楚了没?