gpt4 book ai didi

c++ - 用 "if"建模 "for"

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:22:12 27 4
gpt4 key购买 nike

下面的代码不应该像“if(condition)”语句一样工作吗,当它在另一个循环中并且“body”有自己的 break 或 continue 语句时,会出现明显的错误行为:

for( ; condition ; break ) {
body;
}

这是由关于 C++ 语法的茶歇聊天触发的,该假设是

for( init ; condition ; update ) {
body;
}

等同于

{
init;
while( condition ) {
body;
update;
}
}

使用 g++ 进行的快速实验表明,使用“for(;condition;break)”对“if(condition)”进行建模无法编译。所以问题是:根据最新的标准,g++ 应该吞下这样的构造还是拒绝它是正确的?

最佳答案

拒绝它是正确的——for 循环的形式是(参见 ISO C++ §6.5.3):

for ( for-init-statement condition opt ; expression opt) statement

break 是一个语句,而不是一个表达式。

如前所述,解决方法是

for( ; condition ; ) {
body;
break;
}

这是不使用 break 的另一种方法:

bool b = false;
for (; condition && !b++; ) { // this usage of operator++ on bool is deprecated
body
}

关于c++ - 用 "if"建模 "for",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21413069/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com