运算符 与(&&)、或(||)的 短路特性

总结

与和或的优先级是平级的,都是从左往右顺序执行

  • “||” 左边为true:将后边所有判断式全部短路,不再执行后边的判断式
  • “||” 左边为false: 继续执行后边的判断式,无短路。
  • “&&” 左边为false:只短路下一个判断式,继续执行下下一个判断式**
  • “&&” 左边为true:继续执行后边的判断式,无短路。

1. && 与

if(A 某运算符 B 某运算符 C && D 某运算符 E 某运算符 F…) {}
当C为false时,则短路D,即不执行D,执行E。
当C为true时,则继续执行D。

2. || 或

if(A 某运算符 B 某运算符 C || D 某运算符 E 某运算符 F…) {}
当C为false时,则继续执行D。
当C为true时,则短路后D、E、…后边所有的判断式,直接进入判断体内。

所以,诸君,就加个括号吧。

拿题练手

看这个题:https://leetcode.cn/problems/valid-parentheses/
如果这个题要求不能使用 除if语句之外 的括号,且 else if 只能使用一个,应该怎么写?(但估计也不会有**的要求。。)

应该这么写:

else if(stack.isEmpty() || c==')' && stack.pop()!='(' || c=='}' && stack.pop()!='{' || c==']' && stack.pop()!='[') 
{ 
    return false; 
}

上边 else if() 的执行顺序:
先判断第一个stack.isEmpty()是否成立(后边接的是 “||” 或运算符)

  • 如果成立,则将后边所有判断式全部短路,不再执行后边的判断式;
  • 如果不成立,则进行判断下一个判断式。

再判断第二个c==')'是否成立,(后边接的是“&&” 与运算符)

  • 如果成立,则进行判断下一个判断式。
  • 如果不成立,则将下一个判断式短路,执行下下一个判断式。

之后同理判断。

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值