C语言中表达式1 | | (表达式2) &&表达式3 为什么先执行表达式1?

C语言中表达式1||(表达式2)&&表达式3为什么先执行表达式1... C语言中表达式1 | | (表达式2) &&表达式3 为什么先执行表达式1 展开
 我来答
电灯剑客
科技发烧友

2020-09-10 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:1.2万
采纳率:83%
帮助的人:4963万
展开全部
按照C语言优先级, A || B && C相当于A || (B && C), 所以你可能默认了先执行B && C.
但是需要注意C语言的标准采用逻辑表达式短路求值: 对于d=X||Y, 如果X成立则不执行Y而直接得到d=1; 对于d=X&&Y若X不成立同样跳过Y直接得到d=0.
在你的例子里 A || (B && C) 先得到了A成立, 所以就跳过了余下的表达式.
更多追问追答
追问
那为什么不先执行A&&B你没有回答
追答
因为根本就没有A&&B, 只有B&&C
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jzchenr
2020-09-11 · TA获得超过1062个赞
知道小有建树答主
回答量:851
采纳率:66%
帮助的人:243万
展开全部
||是C语言“逻辑或”操作符,A||B||C,它的执行顺序就是从左到右,当其中一个为真的时候,就不会执行后面的语句了,比如若A=1的话,B和C的都不会执行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shine1991
科技发烧友

2020-09-10 · 智能家居/数码/手机/智能家电产品都懂点
知道顶级答主
回答量:4.7万
采纳率:82%
帮助的人:2.3亿
展开全部
根据运算符优先级A || B && C等效于A || (B && C)
即表达式整体是一个||表达式
||运算符是顺序点,要求先求左表达式值,若左表达式为0(假),在进行右表达式求值;脱左表达式值为非零(真),则右表达式不进行求值,表达式整体值为真(1)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百好佳
2020-09-10 · TA获得超过301个赞
知道小有建树答主
回答量:702
采纳率:75%
帮助的人:183万
展开全部
d = c-- || (b=6) && a++; 等价于 d = c-- || ( (b=6) && a++ );
这把表达式就相当于 给了一个右边为真的逻辑或; 然后判断逻辑或左边是否为真;左边为真即整个表达式为真,右边的算术和赋值都不会再执行了;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式