逻辑操作符

逻辑操作符提供逻辑判断功能,用于构建更复杂的表达式,主要有下面的三个运算符:

!:逻辑取反运算符(改变单个表达式的真假)

&&:与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)。

||:或运算符,就是或者的意思(两侧至少有一个表达式为真,则为真,否则为假)。

注:C语言中,非0为真,0为假

1.逻辑取反运算符

比如,我们有一个变量叫flag,如果flag为假,要做一个什么事情,就可以这样写代码:

1 if(!flag)

2 {

3 printf("do something\n");

4 }

如果flag为真,!flag就是假,如果flag为假,!flag就是真,所以上面的代码意思是就是flag为假,执行if语句中的代码。

2.与运算符

&&就是与运算符,也是并且的意思,&&,就是一个双目操作符,使用的方法是a&&b,&&两边的表达式,都为真的时候,整个表达式才为真,只要有一个为假,则整个表达式为假。

比如:如果我们说的月份是3月~5月,是春天,那么使用代码怎么体现呢?

#include <stdio.h>
int main()
{
int month=0;
scanf("%d",month);
if(month>=3&&month<=5)
{
printf("春天\n");
}
return 0;
}

这里表达的意思就是month既要大于等于3,又要小于等于5,必须同时满足

3.或运算符

||就是或运算符,也就3是或者的意思,||也是一个双目操作符,使用的方法a||b,||两边的表达式只要有一个是真的,整个表达式就是真的,两边的表达式都为假时,才为假。

比如:我们说一年中的月份12月或者1月或者2月是冬天,那么我们怎么使用代码体验呢?

#include <stdio.h>
int main()
{
int month=0;
scanf("%d",month);
if(month==12||month==1||month==2)
{
printf("冬天\n");
}
return 0;
}

4.短路

C语言逻辑运算符还有一个特点,他总是先对左侧的表达式求值,在对右边的表达式求值,这个顺序是保证的。如果左边的表达式满足逻辑运算,就不再对右边的操作数求值。这种情况称为“短路”。

如前面的代码:

1 if(month>=3&&month<=5)

表达式中&&的左操作数是month>=3,右操作数是month<=5,当左操作数month>=3的结果是0的时候,即使不判断month<=5,整个表达式的结果也是0(不是春季)。

所以对于&&操作符来说,左边操作数的结果为0的时候,右边的操作数就不再执行。

对于||操作符是怎样的呢?我们结合前面的代码:

1 if(month==12||month==1||month==2)

如果month==12,则不用再判断month是否等于1或者2,整个表达式的结果也是1(是冬天)。

所以,||操作符的左操作数的结果不为0时,就无需执行右操作数。

像这种仅仅根据左操作数的结果就能知道整个表达式的结果,不再对右操作数进行计算的运算称为短路求值。


  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值