- C++
C++中`switch`语句的学习笔记教程
- 2025-8-13 11:13:50 @
基本结构与原理
switch
语句的基本结构如下:
switch(变量) {
case n:
语句;
break;
default:
语句;
}
switch
后的变量可以是数字、字符或表达式,其值将被计算,然后与各个case
后面的值进行比较。- 如果变量的值与某个
case
后面的n
相符,就会执行对应的语句。执行完该语句后,若遇到break
语句,程序会跳出switch
结构;若没有break
,则会继续执行后续case
的语句,直到遇到break
或switch
结束。 default
分支是可选的,当变量的值与所有case
的值都不匹配时,会执行default
后的语句。
示例代码
#include <iostream>
using namespace std;
int main() {
int i;
cout << "魔术小程序:告诉你输入的是几" << endl;
cout << "输入个整数" << endl;
cin >> i;
switch (i) {
case 0:
cout << "你输的是0,神奇吧" << endl;
break;
case 1:
cout << "你输的是1,神奇吧" << endl;
break;
// 省略其他case...
default:
cout << "你输的不是数字!" << endl;
break;
}
cout << "\n程序执行完了" << endl;
return 0;
}
与无限循环语句连用
switch
语句常与无限循环结合实现菜单导航功能,例如:
#include <iostream>
using namespace std;
int main() {
cout << "选水果报价程序" << endl;
bool quit = false;
for (;;) {
char choice;
cout << "\n (0)苹果(1)香蕉(2)草莓(3)榴莲(4)凤梨(5)葡萄(6)橘子(7)西瓜(q)退出" << endl;
cin >> choice;
switch (choice) {
case '0':
cout << "3千块一个,请付款" << endl;
continue;
// 省略其他case...
case 'q':
quit = true;
cout << "这就完了?" << endl;
break;
default:
cout << "2吧,一共8个选项还选不对?" << endl;
continue;
}
if (quit) break;
}
cout << "\n欢迎下次光临哦亲" << endl;
return 0;
}
变量声明规则
- 在
switch
语句内部声明变量时,需注意作用域。若在case
标签之后直接声明变量,该变量只在当前case
块中可见,且必须在使用前初始化。 - 若想在
case
块之外使用变量,可以用大括号定义一个块,将变量声明和使用限制在这个块内。例如:
switch (x) {
case 1: {
int temp = 10;
// 使用temp
break;
}
// temp在此处不可用
default:
break;
}
与if
语句的比较
switch
语句主要用于等值测试,即只能判断表达式的值是否与某个case
常量匹配;而if
语句可以使用任何类型的条件,如比较运算符、逻辑运算符等构成的复杂条件。- 在处理大量等值判断条件时,
switch
语句通常比多层嵌套的if-else
语句更清晰易读,且在某些情况下编译器可能生成更高效的代码。
6 条评论
-
admin SU @ 2025-8-13 12:05:55
#include<iostream> using namespace std; int main() { int n; cin >> n; switch (n) { case 1: case 3: case 5: { cout << "NO"; break; } default: { cout << "YES"; } } return 0; }
-
2025-8-13 12:03:20@
-
2025-8-13 11:57:31@
#include <iostream> using namespace std; int main() { int i; cout << "魔术小程序:告诉你输入的是几" << endl; cout << "输入个整数" << endl; cin >> i; switch (i) { case 0: { cout << "你输的是0,神奇吧" << endl; break; } case 1: { cout << "你输的是1,神奇吧" << endl; break; } // 省略其他case... default: { cout << "你输的不是数字!" << endl; break; } } cout << "\n程序执行完了" << endl; return 0; }
-
2025-8-13 11:16:33@
-
2025-8-13 11:15:38@
-
2025-8-13 11:14:16@
- 1