C语⾔逻辑运算符的一个特点——
它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是 保证的。
如果左边的表达式满⾜逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”。
一、&& 逻辑与操作符
两边都为真则结果为真,一边为假则结果为假
对于&&操作符来说,左边操作数的结果是0的时候,右边操作数就不再执⾏ (左边操作数的结果是0的时候,右边不必判断也是假)
二、|| 逻辑或操作符
两边为假则为假,一边为真则为真
对于 || 操作符来说,左边操作数的结果是1的时候,右边操作数就不再执⾏ (左边操作数的结果是1的时候,右边不必判断也是真)
仅仅根据左操作数的结果就能知道整个表达式的结果,不再对右操作数进⾏计算的运算称为短 路求值。
下面上代码举例说明
一、逻辑与操作符短路求值问题
首先赋值运算符优先级低于逻辑运算符,其次逻辑操作符从左到右依次计算,++与逻辑运算符的优先级需要根据前置和后置来区分。
二、逻辑与操作符短路求值对照组
三、逻辑或操作符短路求值问题
四、逻辑或操作符短路求值对照组