当我们有多个条件并且我们需要根据条件执行不同的操作时,使用switch case语句。当我们有多个条件时,我们需要在满足特定条件时执行一个语句块。在这种情况下,我们可以使用冗长的 if..else-if语句或switch case。冗长if..else-if的问题是当我们有几个条件时它会变得复杂。switch-case是处理这种情况的干净而有效的方法。
switch case语句的语法:
switch (variable or an integer expression){case constant://C++ code;case constant://C++ code;default://C++ code;}
即使break语句是可选的,switch case语句也大量使用break语句。我们将首先看到一个没有break语句的例子,然后我们将讨论switch case和break。
switch-case示例
#include <iostream>using namespace std;int main(){int num=5;switch(num+2) {case 1:cout<<"Case1: Value is: "<<num<<endl;case 2:cout<<"Case2: Value is: "<<num<<endl;case 3:cout<<"Case3: Value is: "<<num<<endl;default:cout<<"Default: Value is: "<<num<<endl;}return 0;}
输出:
Default: Value is: 5
说明:在swicth中我给出了一个表达式,你也可以给出变量。我给了表达式num + 2,其中num值是 5,并且在相加之后表达式得到 7。由于没有用值 4 定义的情况,所以执行了默认情况。
switch-case流程图
它求值表达式或变量的值(基于switch括号内给出的内容),然后根据结果执行相应的情况。

switch-case中的break语句
在我们讨论break语句之前,让我们看看当我们在switch case中不使用break语句时会发生什么。请参阅以下示例:
#include <iostream>using namespace std;int main(){int i=2;switch(i) {case 1: cout<<"Case1 "<<endl;case 2: cout<<"Case2 "<<endl;case 3: cout<<"Case3 "<<endl;case 4: cout<<"Case4 "<<endl;default: cout<<"Default "<<endl;}return 0;}
输出:
Case2Case3Case4Default
在上面的程序中,我们在switch括号内部有变量i,这意味着无论变量i的值是什么,都会执行相应的case块。我们已将整数值 2 传递给switch,因此控制流切换到case 2,但是在case 2 之后我们没有使用break语句,导致控制流继续到后续case直到结束。然而,这不是我们想要的,我们想要执行正确case块并忽略其余的块。这个问题的解决方案是在每个case块之后使用break语句。
当您希望程序流从switch主体中出来时,使用break语句。每当在switch主体中遇到break语句时,执行流程将直接从switch中出来,忽略其余的情况。这就是您必须使用break语句结束每个case块的原因。
让我们采用相同的例子,但这次使用break语句。
#include <iostream>using namespace std;int main(){int i=2;switch(i) {case 1:cout<<"Case1 "<<endl;break;case 2:cout<<"Case2 "<<endl;break;case 3:cout<<"Case3 "<<endl;break;case 4:cout<<"Case4 "<<endl;break;default:cout<<"Default "<<endl;}return 0;}
输出:
Case2
现在您可以看到只有case 2被执行,其余的后续case被忽略了。
为什么我在default块不使用break语句?
控制流本身会在默认情况下从switch中出来,所以我之后没有使用break语句,但是如果你想要它可以使用它,那么这样做是没有害处的。
重要笔记
1)case并不总是需要顺序1,2,3等。它可以在case关键字后面包含任何整数值。此外,case不需要始终按升序排列,您可以根据要求以任何顺序指定它们。
2)您也可以在switch-case中使用字符。例如:
#include <iostream>using namespace std;int main(){char ch='b';switch(ch) {case 'd': cout<<"Case1 ";break;case 'b': cout<<"Case2 ";break;case 'x': cout<<"Case3 ";break;case 'y': cout<<"Case4 ";break;default: cout<<"Default ";}return 0;}
3)允许嵌套switch语句,这意味着你可以在另一个switch内部使用switch语句。但是应该避免使用嵌套的switch语句,因为它会使程序更复杂,更不易读。
