条件逻辑运算符使用“短路”(short circuit)模式操作,意思是,如果计算Expr1之后结果已确定,那么它会跳过Expr2的求值。
例:短路示例
bool bVal;
bVal=(1==2)&&(2==2);
//左侧false,接着&&运算,结果必是false,所以跳过了右侧的运算
bVal=(1==1)||(1==2);
//左侧true,接着是||运算,结果必是true,所以跳过了右侧的运算
因为短路特性,不要在Exp2中放置带有副作用的表达式(比如改变一个值),因为可能不会计算。
bool bVal;int iVal=10;
bVal=(1==2)&&(9==iVal++);//结果:bVal=False,iVal=10;
↑ ↑
False 不会计算