#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

#include"stdio.h" main() { int a=0,b=0,c=0; if(++a>0||++b>0)++c; printf("%d,%d,%d",a,b,c); }

我们管这个叫”短路“求值 即,if中的这个表达式如果是 exp1 || exp2 ,如果exp1值为1,那不管exp2计不计算整个表达式的值都为1,所以编译器优化后exp2就不计算了 同理exp1 && exp2 如果exp1的值为0 ,exp2也不计算了 此题,++a 大于0 ,因此第二个表达式不计算, ++c也执行了 就是你说的结果
    A+
热门评论