C语言中如何使用switch-case结构进行多条件判断?

2026-04-29 14:276阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计959个文字,预计阅读时间需要4分钟。

C语言中如何使用switch-case结构进行多条件判断?

switch语句根据控制表达式的值,可以将程序流程转向多个语句之一:switch(表达式){case常量1:语句1;case常量2:语句2;…default:语句n;}

switch 语句根据控制表达式的值,可以把程序流跳转到多个语句中的一个执行:

switch (表达式) 语句

C语言中如何使用switch-case结构进行多条件判断?


括号里的表达式具有整数类型,并且这里的语句就是该 switch 主体,它包括了多个 case 标签,以及最多一个 default 标签。

括号里的表达式会被计算一次,并和 case 标签中的常量表达式做比较。如果表达式的值匹配其中的某个 case 常量,程序流就会跳转到该 case 标签后面的语句。如果没有匹配的 case 常量,程序流就会跳转到 default 标签后的语句(如果存在 default 标签)。

例 1 使用了 switch 语句来处理用户所选的菜单命令。

switch 语句

// 处理用户所选择的菜单命令 // --------------------------------------------------- // 声明用到的其他函数 int menu( void ); // 输出菜单,并返回用户键入的字符 void action1( void ), action2( void ); /* ... */ switch ( menu() ) // 根据menu()的结果跳转 { case 'a': case 'A': action1(); // 执行动作1 break; // 不执行任何其他动作 case 'b': case 'B': action2(); // 执行动作2 break; // 不执行默认的动作 default: putchar( '\a' ); // 如果没有识别到任何命令,输出一个警告信息 }
case 和 defaul 标签的语法如下:

case 常量: 语句
default: 语句


case 后的常量指的是常量表达式,它必须是整数类型。在一个特定的 switch 语句中,每个 case 常量都必须具有独一无二的值,不可以重复。但是 switch 语句可以包含多个 case 标签。

default 标签是可选的,可以放在 switch 语句体内任何位置。如果没有 default 标签,并且没有任何 case 常量符合 switch 语句控制表达式的计算结果,那么 switch 语句体中的语句都不会执行。在这种情况下,程序流会转而执行 switch 语句体后面的语句。

switch 语句体通常是一个从 case 标签开始的语句块。如果在第一个 case 标签之前有语句,这些语句并不会被执行。

C 语言的标签只用于标识程序流可能跳转到的目的地。这些标签本身对程序没有影响。因此,从 switch 跳转到第一个符合条件的 case 标签之后,程序会继续顺序执行,不受其他标签的影响。

如果在这个符合条件的 case 标签之后,其他 case 标签中的语句应该被忽略,就应该在所执行的最后一条语句后,加上 break 语句,使得程序流直接跳转到 switch 语句体的后面。

如果需要在 switch 语句内声明变量,那么这些变量应该被声明在嵌套的内部语句块中,如下所示:

switch ( x ) { case C1: { int temp = 10; // 声明temp,仅为该case使用 /* ... */ } break; case C2: /* ... */ }
在 switch 表达式中,应用了整数提升。case 常量被转换为匹配 switch 表达式计算结果的类型。

也可改用 else if 语句来实现 switch/case 语句效果。但是如果依据一个整数表达式的值来判断程序流,则应该使用 switch/case 语句,这种方式可以提高代码的可阅读性。

本文共计959个文字,预计阅读时间需要4分钟。

C语言中如何使用switch-case结构进行多条件判断?

switch语句根据控制表达式的值,可以将程序流程转向多个语句之一:switch(表达式){case常量1:语句1;case常量2:语句2;…default:语句n;}

switch 语句根据控制表达式的值,可以把程序流跳转到多个语句中的一个执行:

switch (表达式) 语句

C语言中如何使用switch-case结构进行多条件判断?


括号里的表达式具有整数类型,并且这里的语句就是该 switch 主体,它包括了多个 case 标签,以及最多一个 default 标签。

括号里的表达式会被计算一次,并和 case 标签中的常量表达式做比较。如果表达式的值匹配其中的某个 case 常量,程序流就会跳转到该 case 标签后面的语句。如果没有匹配的 case 常量,程序流就会跳转到 default 标签后的语句(如果存在 default 标签)。

例 1 使用了 switch 语句来处理用户所选的菜单命令。

switch 语句

// 处理用户所选择的菜单命令 // --------------------------------------------------- // 声明用到的其他函数 int menu( void ); // 输出菜单,并返回用户键入的字符 void action1( void ), action2( void ); /* ... */ switch ( menu() ) // 根据menu()的结果跳转 { case 'a': case 'A': action1(); // 执行动作1 break; // 不执行任何其他动作 case 'b': case 'B': action2(); // 执行动作2 break; // 不执行默认的动作 default: putchar( '\a' ); // 如果没有识别到任何命令,输出一个警告信息 }
case 和 defaul 标签的语法如下:

case 常量: 语句
default: 语句


case 后的常量指的是常量表达式,它必须是整数类型。在一个特定的 switch 语句中,每个 case 常量都必须具有独一无二的值,不可以重复。但是 switch 语句可以包含多个 case 标签。

default 标签是可选的,可以放在 switch 语句体内任何位置。如果没有 default 标签,并且没有任何 case 常量符合 switch 语句控制表达式的计算结果,那么 switch 语句体中的语句都不会执行。在这种情况下,程序流会转而执行 switch 语句体后面的语句。

switch 语句体通常是一个从 case 标签开始的语句块。如果在第一个 case 标签之前有语句,这些语句并不会被执行。

C 语言的标签只用于标识程序流可能跳转到的目的地。这些标签本身对程序没有影响。因此,从 switch 跳转到第一个符合条件的 case 标签之后,程序会继续顺序执行,不受其他标签的影响。

如果在这个符合条件的 case 标签之后,其他 case 标签中的语句应该被忽略,就应该在所执行的最后一条语句后,加上 break 语句,使得程序流直接跳转到 switch 语句体的后面。

如果需要在 switch 语句内声明变量,那么这些变量应该被声明在嵌套的内部语句块中,如下所示:

switch ( x ) { case C1: { int temp = 10; // 声明temp,仅为该case使用 /* ... */ } break; case C2: /* ... */ }
在 switch 表达式中,应用了整数提升。case 常量被转换为匹配 switch 表达式计算结果的类型。

也可改用 else if 语句来实现 switch/case 语句效果。但是如果依据一个整数表达式的值来判断程序流,则应该使用 switch/case 语句,这种方式可以提高代码的可阅读性。