循环控制:break和continue用法

在循环执行的过程中,有时需要在特定条件下提前终止或跳过当前循环,这是编程中常见的需求。C语言提供了breakcontinue两个关键字来满足这些需求。

目录

一、while循环中的break和continue

1、break语句

示例代码:

执行结果:

分析:

2、continue语句

示例代码:

潜在问题:

结论:

二、for循环中的break和continue

1、break语句

示例代码:

执行结果:

2、continue语句

示例代码:

执行结果:

分析:

三、do-while循环中的break和continue

break示例:

continue示例:

注意:

四、总结对比


一、while循环中的break和continue

1、break语句

break****语句用于立即终止当前所在的循环结构,无论循环条件是否仍然满足。执行break后,程序会继续执行循环之后的代码。

示例代码:

cpp 复制代码
#include <stdio.h>

int main()
{
    int i = 1;
    while(i <= 10)
    {
        if(i == 5)
            break;  // 当i等于5时,执行break终止循环
        printf("%d ", i);
        i = i + 1;
    }
    return 0;
}

执行结果:

分析:

  • 程序打印1、2、3、4后,当i等于5时,执行break语句

  • 循环立即终止,不再执行后续的循环体

  • break会永久终止当前所在的循环结构

2、continue语句

continue语句用于跳过当前循环的剩余部分,直接进入下一次循环的条件判断。

示例代码:

cpp 复制代码
#include <stdio.h>

int main()
{
    int i = 1;
    while(i <= 10)
    {
        if(i == 5)
            continue;  // 当i等于5时,跳过本次循环剩余部分
        printf("%d ", i);
        i = i + 1;
    }
    return 0;
}

潜在问题:

  • 当i等于5时,执行continue跳过了i = i + 1语句

  • 导致i始终为5,程序陷入无限循环

  • 这是因为在while循环中,循环变量的更新位于continue之后

结论:

  • continue会跳过当前循环中剩余的代码

  • 在while循环中使用continue时,要特别注意循环变量的更新位置,避免死循环


二、for循环中的break和continue

1、break语句

for循环中的breakwhile循环中的行为一致,都是立即终止循环。

示例代码:

cpp 复制代码
#include <stdio.h>

int main()
{
    int i = 1;
    for(i = 1; i <= 10; i++)
    {
        if(i == 5)
            break;  // 当i等于5时终止循环
        printf("%d ", i);
    }
    return 0;
}

执行结果:

2、continue语句

for循环中的continue行为与while循环略有不同,它会跳过循环体剩余部分,但仍会执行循环变量的更新。

示例代码:

cpp 复制代码
#include <stdio.h>

int main()
{
    int i = 1;
    for(i = 1; i <= 10; i++)
    {
        if(i == 5)
            continue;  // 跳过本次循环剩余部分
        printf("%d ", i);
    }
    return 0;
}

执行结果:

分析:

  • 当i等于5时,continue跳过了printf语句

  • 但仍执行了i++,所以不会造成死循环

  • 这是for循环与while循环中continue的重要区别


三、do-while循环中的break和continue

do-while循环中breakcontinue的行为与while循环基本一致。

break示例:

cpp 复制代码
#include <stdio.h>

int main()
{
    int i = 1;
    do
    {
        if(i == 5)
            break;
        printf("%d ", i);
        i = i + 1;
    } while(i <= 10);
    
    return 0;
}

continue示例:

cpp 复制代码
#include <stdio.h>

int main()
{
    int i = 1;
    do
    {
        if(i == 5)
            continue;
        printf("%d ", i);
        i = i + 1;
    } while(i <= 10);
    
    return 0;
}

注意:

  • do-while循环中的continue同样可能导致死循环,如果循环变量的更新位于continue之后

  • 使用时需要特别注意循环变量的更新位置


四、总结对比

语句 while循环 for循环
break 立即终止循环 立即终止循环
continue 跳过剩余代码,直接判断循环条件 可能导致死循环 跳过剩余代码,但仍执行循环变量更新 不会导致死循环

在实际编程中,应根据具体需求选择合适的循环结构和控制语句,并注意它们的行为差异,特别是可能导致的死循环问题。