c++ switch语句的使用(case 后面可以跟N个语句) |
您所在的位置:网站首页 › open后面可以跟什么 › 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 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这些复杂的数据类型是不支持的。 谢谢你的阅读!
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |