• C++
  • C++中`switch`语句的学习笔记教程

  • @ 2025-8-13 11:13:50

基本结构与原理

switch语句的基本结构如下:

switch(变量) {
    case n:
        语句;
        break;
    default:
        语句;
}
  • switch后的变量可以是数字、字符或表达式,其值将被计算,然后与各个case后面的值进行比较。
  • 如果变量的值与某个case后面的n相符,就会执行对应的语句。执行完该语句后,若遇到break语句,程序会跳出switch结构;若没有break,则会继续执行后续case的语句,直到遇到breakswitch结束。
  • 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 条评论

  • @ 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