C语言中的逻辑运算符
在C语言中,逻辑运算符用于连接两个或多个关系表达式,最终结果是一个布尔值(在C语言中,0代表假,非0代表真,通常是1)。

(图片来源网络,侵删)
主要有三个逻辑运算符:
- 逻辑与 (
&&) - 逻辑或 ()
- 逻辑非 ()
逻辑与 (&&)
&& 运算符表示“,它连接的两个条件必须都为真,整个表达式的结果才为真,只要有一个条件为假,结果就为假。
规则:
真 && 真=> 结果为真(1)真 && 假=> 结果为假(0)假 && 真=> 结果为假(0)假 && 假=> 结果为假(0)
特点: 短路效应
&& 左边的表达式为假,那么右边的表达式不会被计算,因为整个表达式的结果已经确定为假了,这在编程中非常有用,可以避免不必要的计算或错误(在检查指针是否为NULL之后再解引用它)。

(图片来源网络,侵删)
示例代码:
#include <stdio.h>
int main() {
int a = 10;
int b = 20;
int c = 5;
// 示例1:两个条件都为真
if (a > 5 && b > 15) {
printf("条件1成立: a大于5 且 b大于15\n"); // 这行会被执行
}
// 示例2:一个条件为真,一个为假
if (a > 5 && c > 10) {
printf("条件2成立: a大于5 且 c大于10\n"); // 这行不会执行
} else {
printf("条件2不成立\n"); // 这行会被执行
}
// 示例3:短路效应
// a <= 0,(a > 0) 为假,(b / a) 就不会被执行,从而避免了除以0的错误
if (a > 0 && (b / a) > 1) {
printf("条件3成立\n"); // 这行会被执行,因为 (20 / 10) > 1 为真
}
return 0;
}
逻辑或 ()
运算符表示“或者”,它连接的两个条件只要有一个为真,整个表达式的结果就为真,只有当所有条件都为假时,结果才为假。
规则:
真 || 真=> 结果为真(1)真 || 假=> 结果为真(1)假 || 真=> 结果为真(1)假 || 假=> 结果为假(0)
特点: 短路效应 左边的表达式为真,那么右边的表达式不会被计算,因为整个表达式的结果已经确定为真了。

(图片来源网络,侵删)
示例代码:
#include <stdio.h>
int main() {
int score = 85;
// 示例1:一个条件为真即可
if (score >= 90 || score >= 80) {
printf("成绩良好或优秀\n"); // 这行会被执行,因为 score >= 80 为真
}
// 示例2:两个条件都为假
if (score < 60 || score > 100) {
printf("成绩不及格或无效\n"); // 这行不会执行
} else {
printf("成绩在60到100之间\n"); // 这行会被执行
}
// 示例3:短路效应
int x = 0;
// x != 0 为真,就不会执行 (10 / x),避免了除以0错误
// 但这里 x == 0,所以会执行 (10 / x)
if (x != 0 || (10 / x) == 10) {
// 注意:这个例子会引发除以0错误,因为 x == 0,所以会计算右边的表达式
// 这恰恰说明了短路效应的触发条件:左边为真时,右边才不计算。
// 如果想安全地写,应该反过来写: if ((10 / x) == 10 || x != 0)
printf("这个例子会出错,用于说明短路效应的触发条件\n");
}
return 0;
}
结合您的猜测:“1001” 和 “或且”
我猜测您可能想问一个类似这样的问题:“如何用C语言判断一个数是否在1到100之间?”
这个问题恰好完美地结合了“与”和“或”的逻辑。
-
判断一个数
num在1到100之间,意味着它必须同时满足两个条件:num大于或等于 1 (num >= 1)num小于或等于 100 (num <= 100)
-
这两个条件的关系是“并且”,所以我们应该使用逻辑与
&&。
示例代码:
#include <stdio.h>
int main() {
int num;
printf("请输入一个整数: ");
scanf("%d", &num);
// 使用逻辑与 (&&) 判断是否在1到100之间
if (num >= 1 && num <= 100) {
printf("%d 在1到100之间,\n", num);
} else {
printf("%d 不在1到100之间,\n", num);
}
return 0;
}
另一个例子:判断一个数是否“小于1或者大于100”
- 这个条件是“或者”的关系,所以使用逻辑或 。
#include <stdio.h>
int main() {
int num;
printf("请输入一个整数: ");
scanf("%d", &num);
// 使用逻辑或 (||) 判断是否在1到100之外
if (num < 1 || num > 100) {
printf("%d 不在1到100之间,\n", num);
} else {
printf("%d 在1到100之间,\n", num);
}
return 0;
}
这两个例子的输出结果是完全一样的,但逻辑判断的思路不同。
| 运算符 | 名称 | 含义 | 示例 | 结果 (当 x=5, y=10) |
|---|---|---|---|---|
&& |
逻辑与 | 并且 | (x > 0) && (y < 20) |
真 (1) |
| 逻辑或 | 或者 | (x > 10) \|\| (y > 5) |
真 (1) |
|
| 逻辑非 | 非 | !(x > y) |
真 (1) |
希望这个详细的解释能帮助您理解C语言中的“与”和“或”运算符!如果您有更具体的问题,欢迎随时提问。
