-6
for (...)
    for (...)
    {
        break;
        break;   // 1
    }

(1) 处的代码会执行吗?也可能在那里continue或其他任何东西。我知道我可以检查我的调试器,但我想知道 C++ 标准对此有何评论,因为我的编译器可能只是一个特例。

4

7 回答 7

1

根据规格

6.6.1 中断语句 [stmt.break]

break 语句只能出现在迭代语句或 switch 语句中,并导致最小的封闭迭代语句或 switch 语句终止;控制传递到终止语句之后的语句(如果有)。

因此1甚至不应该达到 。一些 Java 编译器甚至可能标记该代码不可访问

于 2013-08-07T10:32:58.867 回答
1

按标准

在嵌套语句中,break 语句结束立即包含它的 do、for、switch 或 while 语句。

因此,在您的情况下,它总是会首先中断,而永远不会出现第二个中断语句。

于 2013-08-07T10:34:18.443 回答
0

at(1)处的代码不会被执行,break意味着跳出循环,所以第一次break后,代码会跳出内循环。

于 2013-08-07T10:30:16.763 回答
0

在该特定循环中,不,不会执行 break 后的任何代码,因为 break 将退出该循环并从内部 for 循环结束后继续执行。尽管在中断之后(在外循环内)出现的内循环之外的任何代码都将被执行。

于 2013-08-07T10:30:45.167 回答
0

不,每次第一个 break 语句被击中时,内部循环都会退出,并且永远不会到达第二个 break 语句。

于 2013-08-07T10:30:52.073 回答
0

你可以在这里看到。

而且我确信下一次休息永远不会超过。无论您使用什么编译器。

于 2013-08-07T10:31:14.180 回答
0

不会。遇到中断时,代码执行会跳出内部第一个循环。
即使代码是这样的

break;
continue;
break;

同样的事情也会发生。继续只是告诉编译器迭代循环进一步跳过其间的任何代码的一种方式。

于 2013-08-07T10:31:19.700 回答