You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多条件while循环中使用||运算符时,何时跳过后续条件?

逻辑或(||)运算符的短路求值规则

不管是两个还是多个用||连接的条件,短路求值的规则完全一致:只要遇到第一个求值为true的条件,就会立即停止后续所有条件的判断,直接返回true。

比如你给出的示例代码:

while (true || false || false)
{
  //Do something...
}

第一个条件是编译期常量true,所以后面两个false的判断会直接被跳过,循环条件直接成立。

编译时行为

  • 编译器会识别||的短路特性,生成的机器码会包含分支逻辑:一旦某个条件判定为true,就跳过剩余条件的执行路径。
  • 如果条件中包含编译期可确定的常量(比如示例中的true),编译器会进行常量折叠,直接把整个条件简化为true,不会生成判断后续false的代码,最终等价于while(true)。

运行时行为

当条件包含变量或运行时才能确定的值时,程序会严格按照从左到右的顺序依次判断:

  • 若第一个条件求值为true:立即终止后续所有条件的判断,直接进入循环体。
  • 若第一个条件为false:继续判断第二个条件;如果第二个为true,则跳过第三个及以后的条件,以此类推。
  • 若所有条件都求值为false:循环终止。

如何验证短路行为

可以通过带副作用的条件表达式来测试,比如变量自增:

int a = 0, b = 0, c = 0;
while (++a > 0 || ++b > 0 || ++c > 0) {
    break; // 只执行一次循环
}
// 运行后a=1,b=0,c=0,说明++b和++c从未执行

通过查看变量最终的值,就能直观确认后续条件是否被跳过。

内容的提问来源于stack exchange,提问作者Vikram Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 14:42:05