短路求值
2026/9/1小于 1 分钟
C语言短路求值
短路求值的本质:
逻辑运算一旦能确定结果,后面的表达式就不再执行。
一、&&:前假,后面不看
int a = 5, b = 3;
!a && (b++);
printf("%d,%d\n", a, b);先算:
a = 5
!a = 0于是:
0 && (b++)&& 左边已经是 0,结果必然是 0。
所以右边:
b++不会执行。
最终:
5,3二、||:前真,后面不看
int a = 5, b = 3;
a || (b++);
printf("%d,%d\n", a, b);因为:
a = 5 → 真所以:
真 || 任意结果必然为真,右边不再执行。
因此:
b 仍然是 3三、记忆规律
A && B
A 为假
→ B 不执行
A || B
A 为真
→ B 不执行所以:
&&看左边就能确定“假”,右边省掉;||看左边就能确定“真”,右边省掉。
四、嵌入式中的典型用法
if (ptr != NULL && ptr->value == 10)
{
...
}先判断:
ptr != NULL只有不为空,才会访问:
ptr->value避免空指针访问。
短路求值不仅是优化,更常用于保证后续表达式的执行前提已经成立。

