提问者:小点点

Break关键字是退出for循环最有效的方法吗? C/C++


中断是退出循环最有效的方式吗? 在下面的代码片段中,A行还是B行是退出循环的更有效的方式? 任何关于如何在引擎盖下的中断指示工作的材料链接将被感激。

for (int i = 0; i < 10; i++) {
       cout << i << endl;
       if (i == 3) {
           break;  // A
           i = 15; // B
       }
   }

我假设在大多数情况下差异很小,并且A更快,因为B需要赋值,增量,然后进行比较,但是我实际上不知道break是如何工作的,知道它比假设要好。 谢啦!


共3个答案

匿名用户

让我们编译下面的代码,看看程序集:

#include <stdio.h>

int loop_with_break() {
    for (int i = 0; i < 10; i ++) {
        puts("Hello, world!");
        if (i == 3) {
            break;
        }
    }
}

int loop_with_assignment() {
    for (int i = 0; i < 10; i ++) {
        puts("Hello, world!");
        if (i == 3) {
            i = 10;
        }
    }
}

int main() {
    loop_with_break();
    loop_with_assignment();
}

匿名用户

关键字break将退出循环,而不在循环条件中进行任何比较。 如果您使用i=15语法,循环将在下次迭代以验证变量i是否大于10,如果大于,则退出。

简而言之,break将不假思索地中断循环,而i=15将导致多一次迭代以查看条件是否满足它。

匿名用户

如果选择while循环,则可以在while循环中将条件设置为false。 但在这种情况下,使用break是有意义的。

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(break|关键字|退出|循环|方法|c|c++)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?