#include"stdio.h" main() { int a=0,b=0,c=0; if(++a>0||++b>0)++c; printf("%d,%d,%d",a,b,c); }
#include"stdio.h" main() { int a=0,b=0,c=0; if(++a>0||++b>0)++c; printf("%d,%d,%d",a,b,c); }
日期:2018-04-11 20:21:18 人气:1
我们管这个叫”短路“求值
即,if中的这个表达式如果是 exp1 || exp2 ,如果exp1值为1,那不管exp2计不计算整个表达式的值都为1,所以编译器优化后exp2就不计算了
同理exp1 && exp2 如果exp1的值为0 ,exp2也不计算了
此题,++a 大于0 ,因此第二个表达式不计算, ++c也执行了
就是你说的结果