c++ switch语句的使用(case 后面可以跟N个语句)

switch语句在处理多分支语句时是一种清晰结构(相比于一系列的if else if ...),

在一般书上的讲解时会给出如下的一般形式

switch(表达式){ 
    case 常量表达式1:  语句1;
    case 常量表达式2:  语句2;
    … 
    case 常量表达式n:  语句n;
    default:  语句n+1;
}
switch后的括号里面 是一个表达式,根据这个表达式返回的值(通常是多值),我们来执行相应的语句,这就是下面

case语句所做的事情,case相当于一个if判断,所谓的常量表达式n其实就是switch后面表达式的值。

        当我们看到这个switch语句的一般形式的时候,我们总会产生一系列的疑问:

          (1)switch 语句在实际应用中一般怎么用?、

          (2)case 后面可以跟几个语句?


接下来我们来解答这两个问题:

          (1)在实际中我们习惯在每一个case语句最后加上一个break,跳出switch语句,如果我们不写break表达式,

那么程序还是会继续向下执行,去判断下一个case,从而浪费时间。当然你也可以利用这个特点来处理一些问题,

就像研发最常跟测试他们说的那句话:“这是特性,不是BUG!”,最后default语句可有可无,具体的选择看具体的

情况。

          (2)上面的一般形式中case语句后只写了一个语句,最开始学的时候我特别疑惑,case后的语句只能跟

一个吗?我有很多语句怎么办,我在case语句里面还有if语句怎么办,其实这些担忧都是没有必要的,在case

语句后面可以有N多语句,这些语句的书写跟在正常逻辑下无区别,你在一个函数里怎么写if语句,在这里就怎么

写。下面我给出个具体例子来演示switch语句:


switch(in_temp)
				{
					case 1:
						if (input_num == 0) 
						{
							i--;
						}else
						{
							i--;
	
							grade -= grade / 10;
							// if grade < 0 set grade = 0
							grade = grade > 0 ? grade : 0;
							if (input_num > number)
							{
								printf("Bigger than number\n",input_num);
							}else
							{
								printf("Smaller than number\n",input_num);
							}
						}
						break;
					case 2:
						i--;
						grade -= (grade / 10);
						grade = grade > 0 ? grade : 0;
						// is  even number
						if (input_num % 2 == 0)
						{
							printf("Not prim\n");
						}else
						{
							printf("Is prim\n");
						}
						break;
					case 3:
						i--;
						grade -= (grade / 10);
						grade = grade > 0 ? grade : 0;
						//test the  Prim() function
						//number = 457;
						if (Prim(number))
						{
							int leftn;
							int rightn;
							scanf("%d %d", &leftn, &rightn);
							// output the Prim in [leftn,rightn]
							for (int j = leftn; j <= rightn; ++j)
							{
								/* code */
								if (Prim(j))
								{
									printf("%d ", j);
								}
							}
							printf("\n");
						}else printf("Not \n");
						break;
					case 4:
						i--;

						grade -= (grade / 10);
						grade = grade > 0 ? grade : 0;
						// judge the number can divide by 3
						if (number % 3 == 0)
						{
							/* code */
							printf("can multi by 3\n");
						}else printf("can not multi by 3\n");
						break;
					default: break;
				}

			}


由上面的例子,我们就很清晰的看到了switch语句的应用。

另外还要注意一点:switch(val)里的参数val,在C++中只能取INT及以下的参数类型(char short等),

想string这些复杂的数据类型是不支持的。

谢谢你的阅读!




你可能感兴趣的:(C/C++常见问题)