大话C语言:第17篇 跳转控制关键字

在C语言中,流程跳转控制关键字包括:

  • break:用于跳出当前循环或switch语句。

  • continue:用于跳过当前循环的剩余部分,开始下一次循环。

  • return:用于从当前方法中返回,并可能返回一个值。

  • goto:在某些语言中用于无条件跳转到程序中的另一个位置,但因其可能导致代码难以理解和维护,现代编程中很少使用。

其中,goto语言不推荐使用。

1 break关键字

break主要用于中断当前循环或switch语句的执行,使程序流程跳出当前的循环体或switch代码块,继续执行后面的语句。

在循环结构中(如forwhiledo-while循环),当遇到break语句时,循环会立即终止,无论循环条件是否满足,都不会再执行循环体中的剩余语句。通常,break语句会与条件判断(如if语句)结合使用,当满足某个特定条件时,触发break来中断循环。

switch语句中,break用于终止当前的case分支,并跳出整个switch语句。如果没有break语句,程序会继续执行后续的case分支,直到switch结构结束,这可能导致不期望的代码执行。使用break可以确保每个case分支的逻辑独立性,防止不同分支间的代码互相干扰。

cpp 复制代码
#include <stdio.h>  
  
int main() 
{  
    unsigned int sum = 0;  
    unsigned int number;  
  
    printf("请输入一个正整数(输入0结束): ");  
    scanf("%u", &number);  
  
    // 当输入不为0时继续循环
    while (number != 0) 
    {   
        sum += number;  
        
        printf("请输入下一个正整数(输入0结束): ");  
        scanf("%u", &number);  
        if (number == 0)
        {  
            break; // 输入0时跳出循环  
        }  
    }  
  
    printf("输入的正整数之和为: %u\n", sum);  
  
    return 0;  
}

2 continue关键字

continue是编程中的一个关键字,主要用于控制循环结构中的流程。在循环中,当遇到continue语句时,程序会跳过当前迭代中continue语句后面的代码,直接进入下一次循环迭代。也就是说,continue会导致循环体中剩余的代码在当前迭代中被跳过,而循环本身不会终止,会继续执行后续的迭代。

continue关键字可以在多种循环结构中使用,包括for循环和while循环。它常常与条件判断语句(如if语句)结合使用,以便在特定条件下跳过当前循环迭代。

cpp 复制代码
#include <stdio.h>  
  
int main() 
{  
    const int LIMITS = 10;
 
    // 只打印10以内的奇数
    for (int index = 0; index < LIMITS; ++index) 
    {  
        // 跳过偶数 
        if ((index % 2) == 0) 
        {  
            continue; //  
        }  
        
        printf("%d ", index); // 只输出奇数的值  
    }  
    return 0;  
}

3 goto关键字

  • goto用于无条件跳转

    • 在一种情况下可以使用goto语句:从一组嵌套的循环中跳出
  • goto语句可以导致代码不易理解和维护,并且容易引入不必要的错误。因此,除非必要,最好不要使用goto语句

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

int main() 
{

    int index = 0;
    while (index < 3) 
    {
        if(index == 1) 
        {
            goto End;	// 跳转到End标签
        }
        
        printf("index = %d\n", index);
        index++;
    }
    
    End:
        printf("it is ending!\n");

    return 0;
}
相关推荐
向宇it33 分钟前
【从零开始入门unity游戏开发之——C#篇26】C#面向对象动态多态——接口(Interface)、接口里氏替换原则、密封方法(`sealed` )
java·开发语言·unity·c#·游戏引擎·里氏替换原则
@菜鸟进阶记@36 分钟前
java根据Word模板实现动态填充导出
java·开发语言
weixin_4526006937 分钟前
串行时钟保持芯片D1380/D1381,低功耗工作方式自带秒、分、时、日、日期、月、年的串行时钟保持芯片,每个月多少天以及闰年能自动调节
科技·单片机·嵌入式硬件·时钟·白色家电电源·微机串行时钟
卖芒果的潇洒农民38 分钟前
Lecture 6 Isolation & System Call Entry
java·开发语言
AAA.建材批发刘哥39 分钟前
Linux快速入门-Linux文件系统管理
linux·运维·服务器·c语言·学习方法
SomeB1oody1 小时前
【Rust自学】6.1. 定义枚举
开发语言·后端·rust
SomeB1oody1 小时前
【Rust自学】5.3. struct的方法(Method)
开发语言·后端·rust
Amarantine、沐风倩✨2 小时前
设计一个监控摄像头物联网IOT(webRTC、音视频、文件存储)
java·物联网·音视频·webrtc·html5·视频编解码·七牛云存储
Kisorge2 小时前
【C语言】指针数组、数组指针、函数指针、指针函数、函数指针数组、回调函数
c语言·开发语言
啦啦右一3 小时前
Spring Boot | (一)Spring开发环境构建
spring boot·后端·spring