【C语言】逻辑运算短路

短路运算符:&&、||        逻辑与、逻辑或

短路原则:在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只有在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。

短路运算的规则:

(1)a&&b&&c。只有a为真(非0),才需要判别b的值。只有当a和b都为真的情况下,才需要判别c的值。如果a为假,无需判别b和c的值。如果a为真、b为假,无需判别c的值。

(2)a||b||c。只要a为真(非0),不必判断b和c。只有a为假,才判别b。a和b都为假,才判别c。

运算符含义举例说明
&&逻辑与a&&b

如果a和b都为真,则结果为真,否则为假。

(那么a为假,可直接判定a&&b为假)

||逻辑或a||b

如果a和b有一个为真,则结果为真;两者都为假时,结果才为假。

(那么a为真,可直接判定a||b为真)


示例:

 例1:已知 A=7.5,B=2,C=3.6,表达式 A>B&&C>A||A<B&&!C>B 的值是___0___。

运算符优先级(高——>低)结合律
>从左往右
&&、||、!从左往右

解答:A>B=1,C>A=0                        ——>        A>B&&C>A=0

           A>B&&C>A=0,A<B=0            ——>        A>B&&C>A||A<B=0

           A>B&&C>A||A<B=0                  ——>        A>B&&C>A||A<B&&!C>B=0

                            &&左边为假,可直接判定表达式为假,无需判别右边表达式!C>B为真为假

 例2:int x=1,y=0,z=2,表达式 y++ && ++z || ++x 的值是__1___。

运算符优先级(高——>低)结合律
++从右往左
&&、||从左往右

解答:y++=0                                        ——>y++ && ++z=0,逻辑计算短路

           y++ && ++z =0,++x=2(非0)——>y++ && ++z || ++x=1

例3: 若有定义语句:“int k1=10, k2=20;”,则执行表达式“(k1=k1>k2) && (k2=k2>k1)” 之后,k1和k2的值分别是( )。

运算符优先级(高——>低)结合律
()从左往右
>从左往右
&&从左往右
=从右往左

解答:表达式整体的计算是从左至右

先计算(k1=k1>k2):k1>k2=0,k1=0       ——>(k1=k1>k2) && (k2=k2>k1)=0,逻辑计算短路

∴k1=0,k2=20

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

琛:D

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

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

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

打赏作者

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

抵扣说明:

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

余额充值