C++ switch case详解

C++ switch case详解,第1张

概述当程序的一部分导致另一部分执行时,会发生分支。if-else if 语句允许程序分支到几个可能的路径之一,当这些测试之一成立时,它执行一系列测试(通常是关系)和分支。 switch 语句是 当程序的一部分导致另一部分执行时,会发生分支。if-else if 语句允许程序分支到几个可能的路径之一,当这些测试之一成立时,它执行一系列测试(通常是关系)和分支。

switch 语句是一个类似的机制,但是它测试的是整数表达式的值,然后使用该值来确定要分支到哪一组语句,以下是 switch 语句的格式:
switch (IntegerExpression){    case ConstantExpression:        //在这里放置一个或多个语句    case ConstantExpression:        //在这里放置一个或多个语句    //case可被重复多次    default:        //在这里放置一个或多个语句}
此类语句的第一行以单词 switch 开始,后面是括号内的整数表达式 Integer Expression。 这可以是以下两种之一:任何一个整型数据类型的变量(包括 char)。其值为任何整型数据类型的表达式。
在下一行是包含几个 case 语句的块的开头,每个 case 语句格式如下:
case ConstantExpression:    //在这里放置一个或多个语句
在单词 case 之后是一个常量表达式 Constant Expression,它必须是整数类型,如 int 或 char,后面跟一个冒号。常量表达式可以是整型常数或整型命名常量。该表达式不能是一个变量(如 n==25),也不能是布尔表达式(如 x<22)。case 语句标记一段分支语句的开头,如果 switch 表达式的值与 case 达式的值匹配,则进入该分支。

请注意,与大多数语句块不同,这组语句不需要大括号,且块中每个 case 语句的表达式必须是唯一的。

在所有 case 语句后面的是可选的 default 部分。如果没有一个 case 表达式与 switch 表达式匹配,则进入该分支。因此,它的作用就像 if-else if 语句中的结尾 else。

下面的程序显示了一个简单的 switch 语句的工作原理:
#include <iostream>using namespace std;int main(){    char choice;    cout << "Enter A,B,or C: ";    cin >> choice;    switch (choice)    {        case 'A' :            cout<< "You entered A. \n";            break;        case 'B' :            cout << "You entered B. \n";            break;        case 'C' :            cout << "You entered C.\n";            break;        default:            cout << "You dID not enter A,or C!\n";    }    return 0;}
程序输出结果:

Enter A,or C: B
You entered B.

第一个 case 是 “case 'A':”,第二个 case 是 “case 'B':”,第三个case是 “case 'C':”。如果变量 choice 包含值'A'、'B'或'C',则这些语句标记程序要分支的位置(请记住,字符变量和常数被视为整数)。如果用户输入除 A、B 或 C 以外的任何内容,则进入 default 默认分支。

注意,在“case 'A'”、“case 'B'”和“case 'C'”部分的末尾都有 break 语句。break 语句可以导致程序退出 switch 语句。在遇到 break 语句后,执行的下一条语句将是终止整个 switch 语句的封闭大括号后面的任何语句。

例如,在前面程序中,遇到 break 之后执行的就是第 22 行大括号之后的语句。每当要“断开”一个 switch 语句时,就需要一个 break 语句,它不会像 if-else if 语句那样选择执行一组语句之后就自动退出。

case 语句显示程序在块中开始执行的位置,break 语句则显示程序停止的位置。如果没有 break 语句,则程序将执行从匹配的 case 语句到块结尾的所有行。

注意,default 部分(如果没有 default 则是最后一个 case 部分)不需要 break 语句。当然有些程序员有强迫症,喜欢也放一个以保持一致。

下面程序是上面程序的修改版,它演示了如果忽略 break 语句会发生什么。
#include <iostream>using namespace std;int main(){    char choice;    cout << "Enter A,or C: ";    cin >> choice;    switch (choice)    {        case 'A' :            cout<< "You entered A. \n";        case 'B' :            cout << "You entered B. \n";        case 'C' :            cout << "You entered C.\n";        default:            cout << "You dID not enter A,or C!\n";    }    return 0;}
程序运行结果:

Enter A,or C: A
You entered A.
You entered B.
You entered C.
You dID not enter A,or C!

在没有 break 语句之后,此程序“渎职”放行了匹配 case 表达式下面的所有语句,使它们都被执行了,但有时这样的效果也正是程序员想要的,如下面所示:
#include <iostream>using namespace std;int main(){    char FeedGrade;    //Get the desired grade of Feed    cout << "Our dog food is availablein three grades:\n";    cout << "A,and C. Which do you want pricing for? ";    cin >> FeedGrade;    // Find and display the price    switch(FeedGrade)    {        case 'a':      case 'A':          cout << "30 cents per pound.\n";        break;       case 'b':      case 'B':          cout << "30 cents per pound.\n";        break;      case 'c':      case 'C':        cout << "15 cents per pound.\n";        break;      default :        cout << "That is an invalID choice.\n";    }    return 0;}
程序输出结果:

Our dog food is available in three grades:
A,and C. Which do you want pricing for? b
20 cents per pound.

当用户输入 a 时,相应的 case 并没有与之相关联的语句,也没有 break,所以程序被放行而不是跳出,进入下一个 case,对应 A 分支。同样的技术也应用于 b 和 C。
总结

以上是内存溢出为你收集整理的C++ switch case详解全部内容,希望文章能够帮你解决C++ switch case详解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1231377.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存