1、switch 语句
使用switch
语句选择要执行的许多代码块之一。
语法
switch(expression) {
case x:
// 代码块
break;
case y:
// 代码块
break;
default:
// 代码块
}
switch case 语句有如下规则:
1)switch
语句中使用的表达式必须具是int
或enum
类型,否则如float
等其他数据类型是无法通过的编译的,因为编译器需要switch
后面的语句和case
后面的值精确匹配,而计算机无法精确表达一个float
数据类型。
2)switch
可以任意个case
语句(包括没有), 值和语句之间使用:分隔。
3)case
后面的值必须是int
常量值,或者返回结果为int
类型的表达式,以下代码无法编译通过。
4)当switch
后面的变量值和case
后面的常量值匹配相等后,case
后面的代码将会被执行,直到break
语句被执行后跳出switch
代码块
5)break
不是必须的,如果没有break
,则执行完当前case
的代码块后会继续执行后面case
代码块的内容,直到执行break
才可以退出
6)switch
有一个默认的情况,我们用default
关键词表示,当switch
后面的变量和所有case
后面的常量都不匹配的情况下,默认执行default
后面的语句
例如:
#include <iostream>
using namespace std;
int main() {
cout << "Please input a number(1-100):" << endl;
int grade;
cin >> grade;
switch (grade / 10) {
case 10:
case 9:
cout << "A\n";
break;
case 8:
case 7:
cout << "B\n";
break;
case 6:
case 5:
cout << "C\n";
break;
default:
cout << "default\n";
break;
}
return 0;
}
2、break关键字
当C++代码执行到break
关键字时,它将跳出switch
块。
#include <iostream>
using namespace std;
int main()
{
char c='\0';
for(int i=1;i<=4;i++){
switch(i){
case 1:c='J';
cout << c;
//break;
case 2:c='e';
cout << c;
break;
case 3:c='p';
cout << c;
//break;
cout << "好\n";//不匹配都会执行
}
}
/*当i=1时运行结果是 Je 当i=2时 运行结果是 e 当i是3是运行结果是 p 好
当i是4时运行结果是好*/
}
注意: continue
不能用于switch
语句
3、default关键字
default
关键字指定在没有case
匹配的情况下要运行的一些代码:
例如:
#include<iostream>
using namespace std;
int main() {
int day = 4;
switch (day) {
case 6:
cout << "学习python\n";
break;
case 7:
cout << "学习java\n";
break;
default:
cout << "cjavapy\n";
}
// 输出 "cjavapy"
return 0;
}
注意:如果default
语句用作switch
块中的最后一条语句,则不需要break
。
4、贯穿现象(Fall-through)
C++中,如果在 case
语句中省略 break
,那么代码会继续执行后续的 case
语句。这被称为贯穿,通常用于多个 case
执行相同代码的情况。
#include <iostream>
using namespace std;
int main() {
char grade = 'B';
switch (grade) {
case 'A':
case 'B':
case 'C':
cout << "Passed" << endl;
break;
case 'D':
case 'F':
cout << "Failed" << endl;
break;
default:
cout << "Invalid grade" << endl;
break;
}
return 0;
}
5、嵌套 switch 语句
可以在 switch
语句中嵌套另一个 switch
语句,但要注意代码的可读性和逻辑复杂度。
#include <iostream>
using namespace std;
int main() {
int category = 1;
int item = 2;
switch (category) {
case 1:
cout << "Category 1 selected" << endl;
switch (item) {
case 1:
cout << "Item 1 in category 1" << endl;
break;
case 2:
cout << "Item 2 in category 1" << endl;
break;
default:
cout << "Unknown item in category 1" << endl;
break;
}
break;
case 2:
cout << "Category 2 selected" << endl;
break;
default:
cout << "Unknown category" << endl;
break;
}
return 0;
}