C语言或且运算符是什么?

99ANYc3cd6
预计阅读时长 13 分钟
位置: 首页 C语言 正文

C语言中的逻辑运算符

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

c语言或且1001c语言或且
(图片来源网络,侵删)

主要有三个逻辑运算符:

  1. 逻辑与 (&&)
  2. 逻辑或 ()
  3. 逻辑非 ()

逻辑与 (&&)

&& 运算符表示“,它连接的两个条件必须都为真,整个表达式的结果才为真,只要有一个条件为假,结果就为假。

规则:

  • 真 && 真 => 结果为 (1)
  • 真 && 假 => 结果为 (0)
  • 假 && 真 => 结果为 (0)
  • 假 && 假 => 结果为 (0)

特点: 短路效应 && 左边的表达式为假,那么右边的表达式不会被计算,因为整个表达式的结果已经确定为假了,这在编程中非常有用,可以避免不必要的计算或错误(在检查指针是否为NULL之后再解引用它)。

c语言或且1001c语言或且
(图片来源网络,侵删)

示例代码:

#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)

特点: 短路效应 左边的表达式为真,那么右边的表达式不会被计算,因为整个表达式的结果已经确定为真了。

c语言或且1001c语言或且
(图片来源网络,侵删)

示例代码:

#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之间,意味着它必须同时满足两个条件:

    1. num 大于或等于 1 (num >= 1)
    2. 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语言中的“与”和“或”运算符!如果您有更具体的问题,欢迎随时提问。

-- 展开阅读全文 --
头像
织梦当前内容页链接标签
« 上一篇 01-28
织梦文章伪静态如何设置?
下一篇 » 01-28

相关文章

取消
微信二维码
支付宝二维码

目录[+]