623 字
3 分钟
Loading
逻辑运算
2023-10-12

逻辑运算是对逻辑量进行的运算,结果只有1和0。逻辑量是逻辑运算和关系运算的结果。

当然,逻辑运算是很实用的东西,比如,想要表示数学区间,例如整数a∈[3,10),应该怎么表示呢?写出3<=x<10计算机是不会认的,他会进行运算得出x>=3是一个逻辑运算,只会得出0或1。

区间的含义就是这个数要大于最小值小于最大值,我们可以用逻辑运算符&&来写出区间,写法是这样的:

a>=3&&a<10

即要a同时满足这两个条件。这样表示在逻辑bool逻辑判断或是if判断甚至是循环里相当重要,例如:

While(a>=1&&a<6)

{

If(a%2==1)

{

a=a+1;

}

Else

{

a=a+2;

}

}

这样就可以表示a的取值范围了。

当然,逻辑运算不仅能判断数字,也可以判断字符。比如判断一个字母是否是大写字母,可以这样表示:

c>=’A’&&c<=’Z’

如果字符c在大写字母A和Z之间,那么它就是一个大写字母啦。

请看下面这种情况:

!a>20

这会是a小于等于20吗?

当然不是,运算是从左到右的,!a的结果只能是1或0,经过逻辑运算之后仍旧是1或0。

逻辑运算也有优先级,遵从这样的关系:

!>&&>||

在逻辑运算中,如果左边已经能够得到确定的结果了,就不会进行右边的运算,所以这种代码是不可以实现的:

Int a=2,b=3;

a==1&&b==1;

&&想要成立的条件是两边都必须是true才行,当左边的a!=1成为既定事实,无论右边如何都不会进行判断。不仅如此,左边成立不成立之后也会跳过右边的运算,比如:

Int a=2,b=3;

a==1&&b=++;

因为a不等于1,所以b++也不会被执行

同样的,如果对于||,左边已经正确就不会进行右边的计算和判断。这个东西被称为短路。所以,为了保证不会出现短路,通常要尽可能避免把赋值和复合赋值组合进表达式里。

| 运算符 | 描述 | 实例 | 结果 | | ! | 逻辑非 | !a | 如果a的结果是true则变为false,false变为true | | && | 逻辑与 | a&&b | 如果ab都是true,则结果为true,否则为false | | || | 逻辑或 | a||b | 如果ab都是false,则结果为false,否则为true |

逻辑运算
https://vilstia.pages.dev/posts/学习笔记/c/逻辑运算/
作者
琴泠
发布于
2023-10-12
许可协议
CC BY-NC-SA 4.0