你能把一个复杂的条件放到for循环中吗?

时间:2009-12-29 12:03:07

标签: c++ for-loop

while (status)

for (int i = 0; i < 3; i++)

以下语法是否正确:

for (int i = 0; i < 3; i++ && status)

如果status为true,我试图让for循环中断。

5 个答案:

答案 0 :(得分:16)

从语法上讲,您可能希望使用:

for (int i = 0; i < 3 && status; i++)

这是有效的。

有些人认为它形式不好,因为它会导致更复杂的循环和烦恼的维护程序员。您可能想要探索的另一种选择是:

for (int i = 0; i < 3; i++) {
     if (!status) { break; }
}

答案 1 :(得分:2)

“如果状态为真,我试图让for循环中断。” 执行此操作的首选方法是在for循环体中使用if语句。

for(int i = 0; i&lt; 3; i ++) {    如果(状态)      打破; }

答案 2 :(得分:2)

我怀疑以下语法正确:

for (int i = 0; i < 3; i++ && status)

但它可能不是你的意思。正如Adam所指出的,您可能想要:

for (int i = 0; i < 3 && status; ++i)

这具有您想要的所有含义,循环条件的所有细节都在for语句中。

替代形式:

for (int i = 0; i < 3; i++) {
     if (!status) { break; }
}
如果您想在if之前或之后使用某些代码,那么

很有用,但if对维护程序员来说变得不那么明显了。

注意:status语句中使用for,如果status为false,则循环可能永远不会运行。

答案 3 :(得分:0)

语法正确是的。但意义不同。 第一段代码,运行for循环,状态等于1.第二段代码,只运行for循环10次,然后退出。

答案 4 :(得分:0)

不应将状态设置为true,而应使用“break”。