C控制语句:分支和跳转(2)

1:else......if语句

2:switch 语句

3:goto语句

---------------------------------------------------------------------------------------------------------------------------------

 

在C语言中,else if语句用于处理多个条件的判断。如果前面的if条件为假,那么else if会继续检查下一个条件。如果所有的条件都不成立,最终会执行else块中的代码(如果存在)。

以下是一个else if语句的示例:

#include <stdio.h>

int main() {
    int x = 10;

    if (x > 10) {
        printf("x is greater than 10\n");
    } else if (x == 10) {
        printf("x is equal to 10\n");
    } else if (x > 5) {
        printf("x is greater than 5 but less than 10\n");
    } else {
        printf("x is 5 or less\n");
    }

    return 0;
}

在这个例子中,程序会输出 "x is equal to 10",因为x等于10,所以会执行与else if (x == 10)相关的代码块。

  • if语句:用于判断第一个条件。如果为真,执行对应的代码块,跳过后续的else ifelse语句。
  • else if语句:用于判断其他条件。可以有多个else if块。
  • else语句:当所有ifelse if条件都为假时,执行else块中的代码。

注意:else块是可选的,可以根据需求省略。

----------------------------------------------

在C语言中,switch语句是一种多分支选择结构,用于根据一个变量或表达式的值执行不同的代码块。switch语句通过比较变量的值和各个case标签的值来确定执行哪个代码块。

switch语句的基本语法如下:

switch (expression) {
    case value1:
        // 当 expression == value1 时执行的代码
        break;
    case value2:
        // 当 expression == value2 时执行的代码
        break;
    // 可以有任意多个 case 语句
    default:
        // 当 expression 不等于任何 case 值时执行的代码
        break;
}
  • expression:通常是一个整数类型的变量或表达式。
  • case valuevalueexpression可能的值之一。如果expression等于value,则执行与该case相关的代码块。
  • break:用于终止switch语句的执行,并跳出switch结构。如果省略break,程序将继续执行后续的case代码块(即使条件不成立),这称为“fall through”现象。
  • default:可选的部分,当expression不匹配任何case时,执行default块中的代码。

以下是一个switch语句的示例:

#include <stdio.h>

int main() {
    int num = 2;

    switch (num) {
        case 1:
            printf("Number is 1\n");
            break;
        case 2:
            printf("Number is 2\n");
            break;
        case 3:
            printf("Number is 3\n");
            break;
        default:
            printf("Number is not 1, 2, or 3\n");
            break;
    }

    return 0;
}

在这个示例中,num的值为2,所以程序会输出"Number is 2"。一旦匹配到case 2,执行相关代码后遇到break,程序跳出switch结构。

注意事项

  1. expression类型:通常是整数或可以隐式转换为整数的类型(如charenum等)。
  2. case标签的值:必须是常量表达式,不能是变量。
  3. break语句:在每个case代码块结束时使用break是一个好习惯,以防止意外的“fall through”行为。
  4. default分支:虽然不是必须的,但通常会包含一个default分支来处理所有未匹配的情况。 

------------------------------------------- 

goto语句是C语言中的一种控制流语句,允许程序无条件地跳转到程序中的某个位置。虽然goto语句提供了一种直接跳转到指定标签的方式,但通常建议避免使用它,因为它会导致代码难以理解和维护,容易引入难以排查的错误。

goto语句的基本语法如下:

goto label;

// 其他代码

label:
// 要跳转到的代码块

 

#include <stdio.h>

int main() {
    int num = 0;

    while (num < 10) {
        num++;
        if (num == 5) {
            goto skip;
        }
        printf("Number: %d\n", num);
    }

    skip:
    printf("Skipped when num was 5\n");

    return 0;
}

 

在这个例子中,当num等于5时,程序会跳转到skip标签,并输出"Skipped when num was 5",而不会执行printf("Number: %d\n", num);语句。

使用goto的注意事项

  1. 代码可读性:滥用goto会导致代码难以阅读和理解,特别是在复杂的程序中。
  2. 替代方案:在大多数情况下,可以使用if-elsewhilefor等结构来实现相同的功能,避免使用goto
  3. 维护性:使用goto可能会导致跳过变量初始化、资源释放等代码,从而引入难以发现的错误。
  4. 标签位置:标签定义的位置必须在当前函数内,不能跨函数使用。

尽管goto在某些情况下可能有其作用(例如在复杂的错误处理逻辑中),但在现代编程实践中,一般建议尽量避免使用goto,以保持代码的结构清晰和易于维护。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值