c语言逻辑运算符,c++逻辑运算符
C语言逻辑运算符详解 ?? 包含逻辑与(&&)、或(||)、非(!)三种基础运算及短路特性解析:
核心代码示例
c
#include <stdio.h>
int main() {
int a = 1, b = 0, c = 2;
int result;
// 1. 逻辑与 (&&) - 两边都为真才为真
result = (a > 0) && (b > 0); // false (1 && 0 = 0)
printf("逻辑与结果: %d\n", result);
// 2. 逻辑或 (||) - 至少一边为真则为真
result = (a > 0) || (b > 0); // true (1 || 0 = 1)
printf("逻辑或结果: %d\n", result);
// 3. 逻辑非 (!) - 取反操作
result = !(a > 0); // false (!1 = 0)
printf("逻辑非结果: %d\n", result);
// 4. 短路特性演示
// &&: 左侧为假时,右侧表达式不执行
(b == 0) && (c = 100); // b==0为真,继续执行右侧,c被赋值100
printf("短路与后c的值: %d\n", c);
(b != 0) && (c = 200); // b!=0为假,右侧不执行,c保持100
printf("短路与未执行右侧后c的值: %d\n", c);
// ||: 左侧为真时,右侧表达式不执行
(a == 1) || (c = 300); // a==1为真,右侧不执行,c保持100
printf("短路或未执行右侧后c的值: %d\n", c);
return 0;
}
代码解析
运算规则:
&&(逻辑与):当且仅当两个操作数都为非0(真)时,结果为1(真),否则为0(假)
||(逻辑或):两个操作数中至少有一个为非0(真)时,结果为1(真),否则为0(假)
!(逻辑非):操作数为非0时结果为0,操作数为0时结果为1
短路特性(重要):
&& 短路:如果左侧表达式为假(0),右侧表达式将不执行
|| 短路:如果左侧表达式为真(非0),右侧表达式将不执行
应用场景:可用于简化条件判断,如 if (ptr != NULL && ptr->value > 0) 避免空指针访问
返回值:C语言逻辑运算结果始终为0(假)或1(真),即使操作数是其他非0值
优先级:! > && > ||,建议使用括号明确运算顺序
使用注意事项
不要混淆逻辑运算符与位运算符(&& vs &,|| vs |)
避免在逻辑表达式中包含副作用操作(如自增、赋值),可能因短路特性导致意外结果
逻辑运算结果可直接用于条件判断(如 if (a && b))
