&& 和 || 的分析1 : 程序中的短路
在C语言中:
|| 从左向右开始计算:
- 当遇到为真的条件时停止计算, 整个表达式为真
- 所有表达式为假时表达式才为假
&& 从左向右开始计算:
当遇到假的条件时停止运算, 整个表达式为假
所有条件为真时表达式才为真
&& 和 || 的分析2:优先级
在C语言中:
逻辑表达式中, && 比 || 具有更高的优先级
例:
计算 ++i || ++j && ++k
(第一步) ++i || ++j && ++k
↓
(第二步)( ++i ) || (++j && ++k)
↓
(第三步)(true && ++i ) || (++j && ++k)
分析:在 && 和 || 混合运算时, 整个表达式被看作 || 表达式, 编译器从左到右开始计算 && 表达式, 当某个 && 表达式的值为真时, 停止计算, 整个表达式的值为真
!(逻辑运算符 非)的分析
在C语言中:
逻辑非 “!” 只认得 0, 见到 0 就返回 1 。因此当其碰见的值不是 0 时, 其结果为 1
/*测试代码*/
#include <stdio.h>
int main()
{
printf("%d\n", !0); // 1
printf("%d\n", !1); // 0
printf("%d\n", !100); // 0
printf("%d\n", !-1000); // 0
return 0;
}