所谓短路计算,是指系统从左至右进行逻辑表达式的计算,一旦出现计算结果已经确定的情况,则计算过程即被终止。
短路运算符只能用于逻辑表达式内,非短路运算符可用于位表达式和逻辑表达式内。也可以说:短路运算只能操作布尔型的,而非短路运算不仅可以操作布尔型,而且可以操作数值型。
什么是&&和||的短路运算?
1、&& 和 || 属于逻辑运算符。
表达式1 || 表达式2
- 只要任意表达式为true,则整个表达式的运算结果为true。
表达式1 && 表达式2
- 必须所有表达式都为true,则整个表达式的运算结果才为true。任意表达式为false,则整个表达式结果为false。
2、&& 和 || 的短路运算。
表达式从左到右执行,如果前面的表达式运算结果可以判断整个表达式的结果,那么就不会进行后面表达式的运算判断。
表达式1 || 表达式2 || 表达式3 || ... || 表达式n
- 如果表达式1的运算结果为true,则整个表达式的结果为true。同时后面的表达式不在执行。
- 如果表达式1的运算结果为false,则根据表达式2的运算结果继续判断。
表达式1 && 表达式2 && 表达式3 && ... && 表达式n
- 如果表达式1的运算结果为false,则整个表达式的结果为false。同时后面的表达式不在执行。
- 如果表达式1的运算结果为true,则根据表达式2的运算结果继续判断。
&& 和 || 的短路运算有什么用?
- 由于 && 和 || 的表达式存在短路运算现象,在短路之后不会对后面的表达式进行运算,所以含有 && 和 || 的表达式最好不要进行变量的赋值和运算操作,可以先计算好每个表达式的结果,直接拿结果进行 && 和 || 的运算。
- 在代码编写的时候就要注意这一点,以防由于 && 和 || 的短路运算导致写出来的代码运算结果与预期的不同。
- 把能快速确定整个表达式结果true或false的表达式放在前面,这样由于短路运算后面的表达式可能不会被运算到,节省处理器的运算时间。