逻辑与和逻辑或的短路问题
int a=5;
int b=10;
bool result=++a>50&&++b>10;
当程序在执行这个代码的时候,先判断逻辑与的第一个表达式,因为++a是前加所以把自身的值加一来参与运算所以6>50 不成立当在逻辑与表达式中被逻辑与连接起来的两个关系表达式有一个不成立是整个表达式的结果为false;所以程序没有必须想后执行了这样就会短路了后面的程序,所以在输出b的时候b的值还是原值.
逻辑或的短路问题
int a=5;
int b=10;
bool result=++a>5||++b>1;
当程序执行这个的时候因为逻辑或表达式有一个条件成立则整个表达式的值为true,所以当程序执行到第一个表达式的时候因为++a前加所以把自身加一参与运算然后6>5所以第一个条件成立,在逻辑或表达式有有一个条件成立整个表达式的值为true,所以程序没必要向后执行了,所以输出b的值还是原值
|
|