【问题标题】:Is it possible to use continue keyword outside a loop in C++?是否可以在 C++ 的循环外使用 continue 关键字?
【发布时间】:2021-11-16 19:57:13
【问题描述】:

根据 ISO C++:

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

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

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

根据引用的最后一部分,我认为以下是允许的:

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

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

【问题讨论】:

  • continue 仅在循环中工作
  • 您似乎误解了这些示例。示例(以及this continue online reference 中的示例)中显示的内容是等效 而非实际行为。使用continue在循环中等效于使用goto some_label;,其中some_label 放置在循环的末尾。跨度>
  • 当标准对像 contin 这样的标识符使用斜体时,这些是仅用于说明的标识符,不能从 C++ 代码中引用。

标签: c++ goto continue


【解决方案1】:

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 2012-12-21
    • 1970-01-01
    • 2023-02-07
    • 2021-05-03
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    相关资源
    最近更新 更多