分支与循环语句------(2)

文章介绍了C语言中逻辑运算符的短路特性,即在满足特定条件后不再评估右侧表达式的值,通过实例演示了&&和||操作符的短路行为。

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

一.逻辑取反运算符 !

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

#include<stdio.h>
int main()
{
	int flag=0;
	if(!flag)
	{
		printf("do something\n");
	}
	return 0;
}

如果 flag 为真,!flag 就是假,如果 flag 为假,!flag 就为真。

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

二.短路

C语言逻辑运算符有一个特点,它总是先对左侧的表达式求值,再对右侧的表达式求值,这个顺序是保证的。

如果左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值,这种情况称为“短路

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

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

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

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

如果month == 12,则不用再判断 month 是否等于 1 或者 2,整个表达式的结果也是 1(是冬季)。所以,|| 操作符的左操作数的结果不为 0 时,就无需执行右操作数。

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

联系:阅读代码,计算代码输出的结果:

#include<stdio.h>
int main()
{
	int i=0,a=0,b=2,c=3,d=4;
	i=a++ && ++b && d++;
	//i=a++ || ++b ||d++;
	printf(" a=%d\n b=%d\n c=%d\n d=%d\n",a,b,c,d);
	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

傲_慢_之_最

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值