首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Break关键字是退出for循环最有效的方法吗?C/C++

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

Stack Overflow用户
提问于 2020-08-02 14:52:24
回答 4查看 278关注 0票数 3

中断是退出循环最有效的方法吗?在下面的代码片段中,A行还是B行是退出循环的更有效的方法?任何链接的材料如何打破指示下的引擎盖,将不胜感激。

代码语言:javascript
复制
for (int i = 0; i < 10; i++) {
       cout << i << endl;
       if (i == 3) {
           break;  // A
           i = 15; // B
       }
   }

我认为这种差异在大多数情况下是微不足道的,而且A更快,因为B需要赋值、增量,然后是比较,但我实际上不知道中断是如何工作的,所以知道比假设更好。谢谢!

EN

Stack Overflow用户

回答已采纳

发布于 2020-08-02 15:05:55

让我们编译以下代码并查看程序集:

代码语言:javascript
复制
#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 == 3,它将直接跳出循环到函数的末尾,而如果使用i = 10,它会将i设置为10,将其增加1,然后进行比较,这要慢一些。但是,这是在编译时没有优化的。如果您使用优化,它们最终都会变成相同的东西。但是,由于break更具可读性,而且不能保证这些优化,所以您应该使用它来打破循环。

票数 6
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63217432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档