在编程中,我们经常会遇到需要根据不同的情况来执行不同的代码,这时候就可以用到switch-case语句了。switch-case语句是一种非常常见的分支结构,可以让代码的逻辑更加清晰明了,同时也能提升代码的执行效率。
首先我们来看一下switch-case语句的基本语法:
```
switch(expression){
case constant-expression:
statement(s);
break;
case constant-expression:
statement(s);
break;
.
.
.
default:
statement(s);
}
```
在这个语句中,我们需要先定义一个表达式expression,然后根据不同的情况(case)执行相应的代码。在每个case中,我们需要定义一个常量表达式(constant-expression),并且在最后必须要跟上一个break语句。如果都没有匹配到,最后会执行default中的语句。
下面我们来看一个简单的例子:
```
int a = 3;
switch(a){
case 1:
cout << "a is 1" << endl;
break;
case 2:
cout << "a is 2" << endl;
break;
case 3:
cout << "a is 3" << endl;
break;
default:
cout << "a is not 1, 2 or 3" << endl;
}
```
在这个例子中,我们定义了一个整型变量a并初始化为3。接下来,我们使用switch-case语句根据a的值执行不同的代码块。由于a的值为3,所以会执行第三个case中的语句,即输出"a is 3"。这里还需要注意的是,由于匹配到了第三个case,它后面的两个case以及default都不会被执行。
除了常量表达式之外,switch-case语句中还可以使用一些其他的语句来匹配不同的情况。下面是一些常用的关键字和语句:
- case语句和default语句
我们在前面已经看到了case和default语句的用法,它们可以用来匹配不同的情况。需要注意的是,case后面的常量表达式必须是整型或枚举类型,而且不能重复。
- break语句
在每个case语句的最后,我们都需要加上一个break语句。这个语句可以跳出整个switch-case结构,继续执行下面的代码。如果没有加上break语句,程序会继续执行下面的case内容,直到遇到break语句或者整个switch-case结束为止。
- switch的嵌套
可以在一个switch语句中再次嵌套另外一个switch语句。这种情况下,内层的switch语句可以作为外层switch中某个case的语句块,用来处理更复杂的分支结构。
下面我们来看一个稍微复杂一些的例子:
```
enum Fruit{APPLE, ORANGE, BANANA};
Fruit fruit = ORANGE;
switch (fruit){
case APPLE:
cout << "Price of apple is 5 yuan/kg" << endl;
break;
case ORANGE:
case BANANA:
cout << "Price of orange or banana is 3 yuan/kg" << endl;
break;
default:
cout << "This fruit is too exotic" << endl;
break;
}
```
在这个例子中,我们定义了一个枚举类型Fruit,并且初始化了一个变量fruit为ORANGE。然后我们使用switch-case语句来根据fruit来执行不同的代码块。由于fruit的值为ORANGE,所以它匹配到了第二个case语句。由于ORANGE和BANANA的价格一样,所以这个case语句中列出了两个常量表达式。程序会输出"Price of orange or banana is 3 yuan/kg"。
最后我们再来看一下switch-case语句和if-else语句之间的区别。虽然它们都可以用来实现分支结构,但是它们在某些方面是有区别的:
- switch-case语句只能使用整型或枚举类型作为常量表达式,而if-else语句可以使用任何类型的表达式进行比较。
- switch-case语句的执行效率比if-else语句要高,因为switch-case语句采用了一种类似于哈希表的方式进行查找,而if-else语句则需要逐个判断每个条件。
- switch-case语句的可读性比if-else语句要高一些,因为它避免了通过缩进来表示代码的层次关系,而是直接使用了类似于标签的方式来对不同的条件进行区分。
当然,并不是所有情况下switch-case语句都比if-else语句更好。在处理一些复杂的逻辑时,if-else语句可能会更加灵活和方便。所以在实际编程中,我们需要根据具体的情况来选择合适的分支结构。
综上所述,掌握switch-case语句是很重要的一项编程技能。它可以让我们更加方便地处理分支结构,提升代码的可读性和执行效率。当然,在选择分支结构时,我们还需要根据具体情况进行评估和选择,寻找最合适的解决方案。