各类资料学习下载合集
https://pan.quark.cn/s/8c91ccb5a474
在 C 语言编程中,我们已经学习了如何使用比较运算符(如 ==
, <
, >
)来判断两个值之间的关系,从而得到“真”或“假”的结果。但很多时候,我们需要根据多个条件的组合来进行判断。例如,判断一个人是否符合“年龄大于 18 岁 并且 拥有驾驶执照”,或者判断一个订单是否满足“金额超过 100 元 或者 是 VIP 用户”。
这时,我们就需要用到 C 语言的逻辑运算符。逻辑运算符用于连接和操作这些“真”或“假”的逻辑值,从而构建出更复杂、更强大的条件表达式。
今天,我们就来深入学习 C 语言中的三个基本逻辑运算符:逻辑非、逻辑与和逻辑或,并通过详细的代码示例来展示它们的用法和特性。
1. C 语言中的“真”与“假”
在深入了解逻辑运算符之前,需要再次强调 C 语言中对“真”和“假”的表示方式(尤其是在 C99 标准引入 _Bool
类型之前,以及在很多实际应用中):
- 假 (False):用整数 0 表示。
- 真 (True):用任何非零整数表示。通常为了方便和习惯,我们用 1 表示真。
逻辑运算符的操作数通常是比较表达式的结果(它们返回 0 或 1),或者任何整数值。逻辑运算符的运算结果也是整数 0 或 1。
2. 逻辑非运算符 (!
)
逻辑非运算符是一个单目运算符,它只需要一个操作数,并且会将其逻辑值取反。
- 如果操作数为真(非零),则
!
运算符返回假(0)。 - 如果操作数为假(0),则
!
运算符返回真(1)。
你可以简单理解为:!0
是 1,!任何非零值
是 0。
语法:
!expression
示例:
int is_valid = 1; // 假设 1 表示真
int is_empty = 0; // 假设 0 表示假printf("!is_valid 的结果是: %d\n", !is_valid); // 预期: !1 -> 0
printf("!is_empty 的结果是: %d\n", !is_empty); // 预期: !0 -> 1
printf("!5 的结果是: %d\n", !5); // 预期: !非零 -> 0
printf("!0 的结果是: %d\n", !0); // 预期: !0 -> 1
3. 逻辑与运算符 (&&
)
逻辑与运算符是一个双目运算符,它需要两个操作数。只有当两个操作数都为真时,&&
运算符的结果才为真。如果其中任何一个操作数为假,结果就为假。
这相当于日常生活中的“并且”关系。
语法:
expression1 && expression2
真值表:
expression1 | expression2 | expression1 && expression2 |
真 (非零) | 真 (非零) | 真 (1) |
真 (非零) | 假 (0) | 假 (0) |
假 (0) | 真 (非零) | 假 (0) |
假 (0) | 假 (0) | 假 (0) |
示例:
int age = 25;
int has_license = 1; // 1表示有驾照// 判断是否成年且有驾照
int is_eligible = (age >= 18 && has_license);
printf("成年 && 有驾照 (%d >= 18 && %d): %d\n", age, has_license, is_eligible); // 预期: (真 && 真) -> 1age = 16;
has_license = 1;
is_eligible = (age >= 18 && has_license);
printf("成年 && 有驾照 (%d >= 18 && %d): %d