C语言中表达式1 | | (表达式2) &&表达式3 为什么先执行表达式1?
4个回答
展开全部
按照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成立, 所以就跳过了余下的表达式.
但是需要注意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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
||是C语言“逻辑或”操作符,A||B||C,它的执行顺序就是从左到右,当其中一个为真的时候,就不会执行后面的语句了,比如若A=1的话,B和C的都不会执行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
根据运算符优先级A || B && C等效于A || (B && C)
即表达式整体是一个||表达式
||运算符是顺序点,要求先求左表达式值,若左表达式为0(假),在进行右表达式求值;脱左表达式值为非零(真),则右表达式不进行求值,表达式整体值为真(1)
即表达式整体是一个||表达式
||运算符是顺序点,要求先求左表达式值,若左表达式为0(假),在进行右表达式求值;脱左表达式值为非零(真),则右表达式不进行求值,表达式整体值为真(1)
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
d = c-- || (b=6) && a++; 等价于 d = c-- || ( (b=6) && a++ );
这把表达式就相当于 给了一个右边为真的逻辑或; 然后判断逻辑或左边是否为真;左边为真即整个表达式为真,右边的算术和赋值都不会再执行了;
这把表达式就相当于 给了一个右边为真的逻辑或; 然后判断逻辑或左边是否为真;左边为真即整个表达式为真,右边的算术和赋值都不会再执行了;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询