c++从零开始---switch 分支语句

1、switch 结构

c++ 的 switch 语句能够更容易地从大型列表中进行选择。switch 语句的通用格式:

switch (integer-expression)
{
	case label11: statement(s)
	case label12: statement(s)
	...
	default: statement(s)
}

c++ 的 switch 语句就像指路牌,告诉计算机接下来应执行哪行代码,执行到 switch 语句时,程序将跳到使用 integer-expression 的值得标记的那一行。例如,如果 integer-expression 的值为 4,则程序执行标签 case 4 那一行。integer-expression 必须是一个结果为整数值得表达式。另外,每个标签都必须是整数常量表达式。最常见的标签是 int 或 char 常量,也可以是枚举量。如果 integer-expression 不匹配任何标签,则程序将跳到标签为 default 的那一行。default 标签可选,如果被忽略,而又没有匹配的标签,则程序将跳到 switch 后面的语句执行。
c++ 中的 case 标签只是行标签,而不是选项之间的界限,也就是说,程序跳到 switch 语句中指定代码后,将依次执行之后的所有语句,除非有明确的其它指示。程序不会在执行到下一个 case 处自动停止,要让程序执行完一组特定语句后停止,必须使用 break 语句。
以下程序演示了如何使用 switch 和break 来让用户选择简单菜单。

#include <iostream>
using namespace std;
void showmenu();
void report();
void comfort();
int main()
{
	showmenu();
	int choice;
	cin >> choice;
	while (choice != 5)
	{
		switch (choice)
		{
			case 1: cout << "\a\n";
				break;
			case 2: report();
				break;
			case 3: cout << "The boss was in all day.\n";
				break;
			case 4: comfort();
				break;
			default: cout << "That's not a choice.\n";
		}
		showmenu();
		cin >> choice;
	}
	cout << "Bye! \n";
	return 0;
}
void showmenu()
{
	cout << "Please enter 1, 2, 3, 4, or 5: \n"
		"1) alarm           2) report\n"
		"3) alibi           4) comfort\n"
		"5) quit\n";
}
void report()
{
	cout << "It's been an excellent week for business.\n"
		"Sales are up 120%. Expenses are down 35%.\n";
}
void comfort()
{
	cout << "Your employees think you are the finest CEO\n"
		"int the industry. The board of directors think\n"
		"you are the finest CEO int the industry.\n";
}

2、switch 的执行逻辑

前面说到,c++ 中的 case 标签只是行标签,程序跳到 switch 语句中指定代码后,将依次执行之后的所有语句。例如,程序跳到 case 2,如果没有 break 语句,则程序将继续执行 3、4、5 语句。这样的设计是为了 switch 的选项更加多样,功能更加强大,比如下面的程序示例:

char choice;
cin >> choice;
while (choice != 'Q' && choice != 'q')
{
	switch (choice)
	{
	case 'a':
	case 'A': cout << "\a\n";
		break;
	case 'r':
	case 'R': report();
		break;
	case 'l':
	case 'L':cout << ...
		...
	}
}

程序中,由于 case ‘a’ 后面没有 break 与语句,因此程序将接着执行下一行—case ‘A’ 后面的语句,这样使得一条语句可以对应两个限制条件。

3、将枚举量用作标签

cin 无法识别枚举量,程序要求用户输入一个整数,当switch 语句将 int 值和枚举量标签进行比较时,将枚举量提升为 int。另外,在 while 循环测试条件中,也会将枚举量提升为 int 类型。

#include <iostream>
enum { red, orange, yellow, green, violet, indigo };

int main()
{
	using namespace std;
	cout << "Enter color code (0-5): ";
	int code;
	cin >> code;
	while (code >= red && code <= indigo)
	{
		switch (code)
		{
		case red: cout << "red\n"; break;
		case orange: cout << "orange\n"; break;
		case yellow: cout << "yellow\n"; break;
		case green: cout << "green\n"; break;
		case violet: cout << "violet\n"; break;
		case indigo: cout << "indigo\n"; break;
		}
		cout << "Enter color code (0-5): ";
		cin >> code;
	}
	return 0;
}

4、switch 与 if 的区别

switch 的标签只能是整数或 char,则限定了 switch 更加适用于散点值,而 if 可以适用于 5 < x < 9 这样的连续条件。通常情况下,如果可以使用 switch 和 if,当选项不少于 3 个时,使用 switch 效率更高。

5、break 和continue 语句

break 为跳出循环语句,或者跳出 switch 语句,执行循环或者 switch 后面的语句。continue 用于循环中,让程序跳过循环体中余下的代码,并开始新一轮的循环。
**continue 语句:**如下图,程序执行了 statement1 后,进入分支语句 if,如果满足 a < 4 这个条件,则执行 continue 语句,程序不再执行之后的语句,结束本次循环,重新开始下一轮循环;如果不满足 a < 4 这个条件,则继续执行 statement2,直到循环重新开始。
在这里插入图片描述
**break 语句:**如下图,程序执行了 statement1 后,进入分支语句 if,如果满足 a < 4 这个条件,则执行 break 语句,程序直接跳出 while 循环,执行 statement3 语句;如果不满足 a < 4 这个条件,则继续执行 statement2,直到循环重新开始。在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值