代码是否会突破'执行?

时间:2013-08-07 10:27:44

标签: c++ break continue

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

(1)的代码会执行吗?也可能有continue或其他任何内容。 我知道我可以检查我的调试器,但我想知道C ++标准对它的说法,因为我的编译器可能只是一个特例。

7 个答案:

答案 0 :(得分:1)

根据specifications

  

6.6.1中断声明[stmt.break]

     

break语句只能在iteration-statement或switch语句中出现并导致终止   最小的封闭迭代语句或switch语句;控制传递给声明   在终止的陈述之后,如果有的话。

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

答案 1 :(得分:1)

按照标准

  
    

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

  

所以在你的情况下,它总是会先破坏而永远不会进入第二次破坏声明。

答案 2 :(得分:0)

(1)处的代码不会执行,break表示跳出循环,因此在第一次中断后,代码将跳出内循环。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

您可以看到here.

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

答案 6 :(得分:0)

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

break;
continue;
break;

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