soword科技言
永久公益免费API接口
提供永久免费的API接口,查看更多API接口,如果您有其他免费API资源,请联系我们,造福人类。
提供商务开发:小程序,系统,APP
定制开发,免费评估,免费咨询,价格便宜,售后保障,前往开发服务中心联系开发客服中心
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是如何工作的,比知道更好。谢谢!

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

#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更具可读性并且不能保证这些优化,因此应使用它来打破循环。

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

简而言之,break将在不考虑任何事情的情况下中断循环,而i = 15将导致再进行一次迭代以查看条件是否满足要求。

你是对的!实际上break关键字对于打破循环来说是非常快的!

在您的示例中,如果使用A行,则控制到达此语句后,它将立即中断循环。

另一方面,如果您使用行B,则将首先执行分配,然后控件将再次进入条件检查,当条件变为假时,它将退出循环!



2023-03-22 10:04:19

新人小程序+APP定制199元起


发放福利,助力中小企业发展,真正在互联网中受益

点击询问定制

广告服务展示