关于逻辑操作符‘&&’和‘||’短路的理解

引言:C语言的逻辑运算符有一个特点,他总是先对左侧的表达式求值,再对右侧的表达式求值,这个顺序是保证的。如果左边的表达式的值满足逻辑运算符的条件,就不会再对右边的表达式求值。这种情况称为“短路”。

这种情况会出现在&&(并且)和||(或者)。短路的本质还因该从这两个符号说起:

1、&&:对于并且来讲,()&&();当一个表达式的左边为真时还要考虑右边是否为真,当两边同时为真时,整个式子才是真的。但是当左边为假时,就不用再考虑右边式子是否成立。

实例:

当我们输入如下代码时:

表达式中的坐操作符是month >= 3,右操作数是month <=5,当左操作数的结果为0时,即使不判断右侧的结果,整个表达式的结果也是0。
所以对于&&操作符来说,左边操作数的结果是0的时候,右边操作数就不会再执行了
操作实例;

代码讲解:在进行赋值操作的时候呢 a++,是先使用再加1,所以呢开始时a=0,使用后才变成1,所以当a使用时为0时,&&右边的操作数就不再执行,所以最后的输出结果为a=1,b=2,c=3,d=4;

2、||:对于并且来讲,()||();当一个表达式的左边为假时还要考虑右边是否为假,当两边同时为假时,整个式子才是假的。但是当左边为真时,就不用再考虑右边式子是否成立。

实例:

当我们输入如下代码时:
如果month==12,则不⽤再判断month是否等于1或者2,整个表达式的结果也是1。 所以, || 操作符的左操作数的结果不为0时,就无需执行右操作数。
操作实例:

代码讲解:在进行赋值操作的时候呢 a++,是先使用再加1,所以呢开始时a=0,使用后才变成1,所以当a使用时为0时,继续执行++b,以此类推

以上就是有关短路的问题了,希望可以给你带来收获,喜欢的话记得点赞收藏,谢谢大家!

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值