首页 > 解决方案 > 是否可以在 C++ 的循环外使用 continue 关键字?

问题描述

根据 ISO C++:

continue 语句应仅出现在迭代语句中,并导致控制传递到最小的封闭迭代语句的循环继续部分,即循环结束。更准确地说,在每个陈述中

while (foo) {           do {                    for(;;){
  {                     {                       {
      // ...              //....                 //...
  }                     }                       }
  contin:;             contin:;                contin:;
  }                    } while (foo);           }

未包含在封闭的迭代语句中的continue等效于 goto contin

根据报价的最后一部分,我认为允许以下内容:

#include <iostream>
using namespace std;
int main() {
    continue;
    cout << "Will be jumped" << endl;
contin:
}

我认为这将用作 goto 语句,跳转到contin. 我错过了什么?

标签: c++gotocontinue

解决方案


这是一个轻微的措辞问题。引用的意思是在

for (;;) {
  {
    // ...
  }
contin: ;
}

...可以是任何东西,包括另一个迭代语句。

for (;;) {
  {
    while(foo()) {
        // ...
        continue;
    }
  }
contin: ;
}

continue;没有嵌套在另一个循环结构的,将等价于goto contin;. 但如果它被包含,它当然会继续内部循环,而不是外部循环。

请记住,这contin: ;是用于展示目的。这并不意味着您可以使用文字 C++ 级别的标签来做事。


推荐阅读