C语言 a--||b--&&--c 表达式的理解 A||B&&C

问题:

观察运行结果,不理解b和c的值为什么是1

#include<stdio.h>
int main()
{
	int a,b,c;
	a=b=c=1;
	a--||b--&&--c;
	printf("%d,%d,%d
",a,b,c);
	return 0;
}

运行结果:

e024622419a34cc784778506af506407.png

结果分析:

&&的截断:

&&的截断在0,如命题A,B。A&&B,如果A为0,则表达式必为0,后面截断不看,计算也不再运行。

||的截断:

||的截断在于非0,如命题A,B。A||B,如果A为非0,则表达式必为1,后面截断不看计算也不再运行。

该截断内容引自其他博主

个人理解(参考自百度):

&&的优先级高于||,但运算符的优先级与系统进行表达式运算的顺序没有必然的关系,比如表达式A||B&&C,由于&&优先级高于||,所以等效于A||(B&&C),但是系统会先对表达式中的A进行判断,若A的值为非零值(真),则由于逻辑运算符的短路效应,后面的表达式B&&C就不再判断;反之则继续进行表达式B&&C的判断

 

 

 

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
根据引用和引用的解释,当使用逻辑运算符&&时,如果第一个操作数为0,则整个表达式的结果为0,并且不继续计算后面的操作数。而当使用逻辑运算符||时,如果第一个操作数为非0,则整个表达式的结果为1,并且不继续计算后面的操作数。 根据引用中给出的代码,a、b和c的初始值都为1。在表达式a--||b--&&--c中,--表示递减操作,即每个操作数的值在使用后都会减少1。根据引用和的解释,我们可以按照以下步骤来计算表达式的结果: 1. 首先,计算a--。由于a的初始值为1,所以a--的结果为1,然后将a的值减少1。 2. 接下来,计算b--&&--c。由于b和c的初始值也都为1,所以将b和c的值都减少1,并且b--的结果为1。 3. 最后,计算表达式a--||b--&&--c。由于a的值为0,根据引用的解释,整个表达式的结果为0。 因此,根据给定的表达式a--||b--&&--c,a的值为0,b和c的值都减少了1。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [C语言 a--||b--&&--c 表达式理解 A||B&&C](https://blog.csdn.net/qq_45680866/article/details/123170818)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

DinGHaoGG

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

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

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

打赏作者

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

抵扣说明:

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

余额充值