C语言重来40:逻辑运算(内含优先级顺序)

文章介绍了逻辑运算的基础知识,包括逻辑非(!),逻辑与(&&),逻辑或(||)的运算规则。强调了在编程中判断区间和条件时,如(x>4&&x<6)的正确用法。同时,提到了运算符的优先级和短路现象,例如在a==6&&b++中,如果a不成立,则不会执行b++。最后通过示例代码展示了短路效应,并警告避免在表达式中使用复合赋值语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

逻辑运算是对逻辑量进行的运算,结果只有0或者1.

逻辑量为关系运算或逻辑运算的结果。

具体的逻辑量我们来看下面的这个表格:

运算符

描述

示例

结果

逻辑非

!a

如果a是true就是false

如果b是false就是true

&&

逻辑与

a&&b

如果a和b都是ture,结果为ture,否则就是faluse

||

逻辑或

a||b

如果a和b有一个是true,结果为true,两个都是faluse,结果为faluse

这里需要注意的一点就是,当我们表示一个数字在(4,6)之间的时候,不能使用我们数学上的方法:4<x<6,由于前面的4<x这里就是一个逻辑语句,它的结果是一个逻辑值:0或1.

而正确的式子是这个样子的:

x>4&&x<6;

当我们判断一个字符C是否为大写字母的时候,可以使用和上面一样的代码:

c>='A'&&c<='Z'

我们在下面的代码中具体用例子来进行以上的所有的逻辑量的使用的方法:

age>20&&age<30;//大于20小于30。
index<0||index>99;//小于0或者大于99.
!age<20;//先计算前面的!age,变成非age,如果age 为0的话结果就是1,如果age是 1的话,结果就是0.

这块的优先级比较乱,我们具体来分析一下:

这里有一个总优先级的集合,我们用一张大表来进行优先级的判断:

优先级

运算符

结合性

1

()

从左到右

2

!+-++--

从右到左(单目的+和-)

3

*/%

从左到右

4

+-

从左到右

5

< <= > >=

从左到右

6

== !=

从左到右

7

&&

从左到右

8

||

从左到右

9

= += -= *= /= %=

从右到左

这边有一个比较重要的点就是短路:

逻辑运算是自左向右进行的,如果左边的结果已经能够决定结果的话,就不会做右边的运算,具体来看下面的代码:

a==6&&b==1;//这块就是,如果最左边的a==6不成立的话,那右边的b==1就不再进行运算了。
a==6&&b+=1;//和上面的语句同理,这但是这里的b的那个语句有赋值的符号,但是左边的语句如果不成立的话,右边的语句就不会进行赋值加一。

这个也就相当于||如果左边是ture的话就不再运行右边的程序了。

我们在具体的程序中来实施这个特殊的选择方式:

#include<stdio.h>
int main()
{
    int a = -1;
    if (a > 0 && a++ > 1)
    {
        printf("OK");
    }
    printf("%d\n", a);
    return 0;
}

最后的结果为-1,则说明a++没有被执行。

所以最后的忠告是:不要在表达式中加复合赋值语句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值