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

C++ while循环中是否支持类似C++17 if的声明与条件分离语法?

答案

C++20已经正式支持和if初始化语句类比的while循环初始化语法,语法格式为:
while (初始化语句; 条件表达式)

你给出的示例代码本身就符合C++20的标准语法,初始化语句只会在首次进入循环前执行一次,作用域覆盖整个循环体。如果想要进一步压缩变量作用域,还可以直接把变量声明放在初始化部分,写法如下:

while (char *o = ch, *a = ch; 
       o = strstr(o, "||"), a = strstr(a, "&&");
       o != nullptr && a != nullptr)
{
    // 循环内部逻辑
}

上述写法中o和a仅在循环内部可见,不会污染外部作用域。

如果需要兼容C17及更早的标准,可以用for循环实现完全等效的效果,所有C版本都支持该写法:

for (char *o = ch, *a = ch; 
       o = strstr(o, "||"), a = strstr(a, "&&"), o != nullptr && a != nullptr;
       /* 无迭代语句 */)
{
    // 循环内部逻辑
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 14:15:08