Cprogramming 简明教程
C - Nested Switch Statements
在外部 switch 的语句序列一部分中具有 switch 是可能的。即使内部和外部 switch 的大小写常数包含通用值,也不会出现冲突。
Syntax
nested switch 语句的语法如下 −
switch(ch1){
case 'A':
printf("This A is part of outer switch" );
switch(ch2) {
case 'A':
printf("This A is part of inner switch" );
break;
case 'B': /* case code */
}
break;
case 'B': /* case code */
}
Example
请看以下示例:
#include <stdio.h>
int main (){
/* local variable definition */
int a = 100;
int b = 200;
switch(a){
case 100:
printf("This is part of outer switch\n", a);
switch(b){
case 200:
printf("This is part of inner switch\n", a);
}
}
printf("Exact value of a is: %d\n", a);
printf("Exact value of b is: %d\n", b);
return 0;
}
Nested Switch-Case Statements in C
就像 nested if–else ,您也可以嵌套 switch-case 结构。您可以在外部 switch 范围的一个或多个 case 标签的代码块内分别包含一个不同的 switch-case 结构。
可以按照下列方法嵌套 switch-case −
switch (exp1){
case val1:
switch (exp2){
case val_a:
stmts;
break;
case val_b:
stmts;
break;
}
case val2:
switch (expr2){
case val_c:
stmts;
break;
case val_d:
stmts;
break;
}
}
Example
下面是一个演示 C 中嵌套 Switch 语句语法的简单程序 −
#include <stdio.h>
int main(){
int x = 1, y = 'b', z='X';
// Outer Switch
switch (x){
case 1:
printf("Case 1 \n");
switch (y){
case 'a':
printf("Case a \n");
break;
case 'b':
printf("Case b \n");
break;
}
break;
case 2:
printf("Case 2 \n");
switch (z){
case 'X':
printf("Case X \n");
break;
case 'Y':
printf("Case Y \n");
break;
}
}
return 0;
}
当你运行这段代码时,它将产生以下输出:
Case 1
Case b
更改变量的值 ( x 、 y 和 z ),并再次检查输出。输出取决于这三个变量的值。