C++PrimerPlus 第六章 分支语句和逻辑运算符 - 6.6 break和continue语句

目录

6.6 break和continue语句


6.6 break和continue语句

break和continue语句都使程序能够跳过部分代码。可以在switch语句或任何循环语句中使用break语句,使程序跳到switch或循环后面的语句处执行。continue语句用于循环中,让程序跳过循环体中余下的代码,并开始新一轮循环(参见下图)。

 

程序清单6.12演示了这两条语句是如何工作的。该程序让用户输入一行文本。循环将回显每个字符,如果该字符为句点,则使用break结束循环。这表明,可以在某种条件为true时,使用break来结束循环。接下来,程序计算空格数,但不计算其他字符。当字符不为空格时,循环使用continue语句跳过计数部分。

程序清单 6.12 jump.cpp

//jump.cpp -- using continue and break
#include<iostream>
const int ArSize = 80;
int main()
{
	using namespace std;
	char line[ArSize];
	int spaces = 0;

	cout << "Enter a line of text: \n";
	cin.get(line, ArSize);
	cout << "Complete line: \n" << line << endl;
	cout << "Line through first period: \n";
	for (int i = 0; line[i] != '\0'; i++)
	{
		cout << line[i];		//display character
		if (line[i] == '.')		//quit if it's a period
			break;
		if (line[i] != ' ')		//skip rest of loop
			continue;
		spaces++;
	}
	cout << "\n" << spaces << " spaces\n";
	cout << "Done.\n";
	return 0;
}

下面是该程序的运行情况:

        Enter a line of text:

        Let's do lunch today. You can pay!

        Complete line:

        Let's do lunch today. You can pay!

        Line through first period:

        Let's do lunch today.

        3 spaces

        Done.

程序说明:

虽然continue语句导致该程序跳过循环体的剩余部分,但不会跳过循环的更新表达式。在for循环中,continue语句使程序直接跳到更新表达式处,然后跳到测试表达式处。然而,对于while循环来说,continue将使程序直接跳到测试表达式处,因此while循环体中位于continue之后的更新表达式都将被跳过。在某些情况下,这可能是一个问题。

该程序可以不使用continue语句,而使用下面的代码:

        if (line[i] == ' ')

                spaces++;

然而,当continue之后有多条语句时,continue语句可以提高程序的可读性。这样,就不必将所有这些语句放在if语句中。

和C语言一样,C++也有goto语句。下面的语句将跳转到使用paris: 作为标签的位置:

        goto paris;

也就是说,可以有下面这样的代码:

        char ch;

        cin >> ch;

        if (ch == 'p')

                goto paris;

        cout << ...

        ...

        paris:cout << "You've just arrived at Paris.\n";

在大多数情况下(有些人认为,在任何情况下),使用goto语句不好,而应使用结构化控制语句(如if else、switch、continue等)来控制程序的流程。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hank_W

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值