011 - C++控制流语句(continue, break, return)

今天我们讲的是控制流语句,本期内容是上期课程的延续。

控制流语句一般与循环语句一起工作,它们让我们可以更好的控制这些循环的实际运行。

大概

我们有三个主要的控制流语句可以使用,continuebreakreturn,它们有不同的功能。

continue 只能在循环中使用,它表示 进入这个循环的下一个送代(前提是:如果还有下一次迭代,如果没有,循环就会结束)。

break 主要用于循环中,它也会出现在 switch 语句中,break 意思是要跳出循环,也就是终止循环。

return 应该是最有 ‘‘力量’’ 的一个语句,因为 return 会完全 ‘‘脱离’’ 你的函数,如果你在一个函数中碰到了一个 return 关键字,程序运行会退出这个函数,当然函数可能需要一个返回值,如果只有 return 本身,你只能返回 return 本身,return 本身只适用于 void 函数,如果你的函数需要返回值的话,它需要提供一个返回值。

我们来看一个实际的例子。下面是一段我们之前使用过的程序。

iNe6gA.png

continue

我们的第一个控制流语句,是continue。

continue 将跳到 for 循环的下一个迭代,如果我按照下面的方式修改,它将不会影响 for 循环的行为,因为这个位置已经是 for 循环的结尾了。

iNeFKo.png

当程序运行到这一行时,不管怎样,这一行会继续到下一次送代,所以这根本不会改变它的行为。

然而,如果我再这样做,你就会看到明显的不一样了。

iNedUN.png

因为如果 i 对 2 取余等于 0 ,就会执行 continue,所以从第一个开始,每两个迭代会跳过一个。

我们可以记录实际的 i 变量的值来查看当前的索引值是怎么变化的。

iNehRV.png

F5 运行你可以看到只运行在奇数迭代。换句话说,当 i 为 0 时,它不会运行,因为 0模2 的结果是 0,结果是 true,程序会执行 continue。当 i 是1 时,我们会输出记录,当等于 2 时,不会输出,当等于 3 时,我们会输出记录,当等于 4 时,不会输出,程序到不了 5,因为如果等于 5,我们就不会执行 for 循环了,因为这个 for 循环的条件就是 i 小于 5。

我们把程序搞更简单点。

iNe5Sd.png

如果 i 大于2,就 continue。

当 i 等于 0 时,这里应该会打印信息,当等于 1 或者 2 时,程序也会打印 。但是当 i 等于 3 或者 4 时,程序不会打印信息。

好了,这就是 continue 的大致内容,它的意思就是当 continue 被运行时,它将跳到 for 循环的下一个送代。

我们通过设置断点来调试,这会让你更深入的了解这个语句。

iNeE1J.gif

好了,continue 就介绍到这里。让我们来看看 break 。

break

如果我们把上面代码中的 continue 替换成 break,你会发现程序运行的结果看上去是一样的。

iNeoVb.png

然而,如果我回到第一个例子的情况,你可以看到情况是完全不一样的。

iNesbq.png

程序什么都没有输出。

我们做一下修改。

iNev6z.png

第一次迭代的时候,i 为 0, i+1 模 2 的结果是 1,所以 if 评估表达式的结果为 false,程序不会到达 break 语句。

第二次迭代的时候,i 为1, i+1 模 2 的结果是 0,所以 if 评估表达式的结果为 true,程序执行 break 语句,循环结束了。

如果我们放一个断点进行调试,你会看到我们第一次迭代不会触发 break,但在第二次我们运行这个 for 循环时,这里为 true, 然后运行了 break。程序直接跳转到 14 行。

iNe76t.gif

这就是 break,它可以让程序完全跳出 for 循环,当然这些控制流语句可以用在所有的循环语句中,所以它们在 for 循环、while 循环、do-while 循环中的运作方式是一样的。

好了,最后一个是 return。

return

当前主函数是一个需要返回 int 的函数(第四行有关键字 int ),所以我们不能只是写 return,我们需要写 return XXX。

我们试试只写 return ,按下 Ctrl+ F7

iNe9Qw.png

iNeKCa.png

程序报错,你可以看到程序申明必须返回一个值。

我们做一些修改,return 0,然后运行程序,程序会立即终止,因为我们没有运行到 std::cin.get() 语句。这是我们的窗口保持打开的语句,它期待我们输入东西。

设置一个断点进行调试。

iNezCc.gif

当第二次迭代,程序执行到 return 0,你会看到,程序直接跳到花括号下面(第 15 行),因为函数现在结束了。

关于 return 语句,基本上就是这些了,需要注意的是,它不是必须在循环中使用,这点与 continue 和 break 不同。当然,如果你的函数要一个返回值,记得在 return 后面给它一个对应的值来返回。

后话

整体上说,这些控制语句就是控制你的代码如何 流动 的。控制语句结合循环语句和 if 语句一起完成程序运行,这些就是编程的基本逻辑,你可以使用这些控制语句语句决定下一行要执行什么代码,这些是可以改变你的程序行为的工具。

之后的系列中,我们会一直使用所有这些控制语句,并向你们展示它们在哪里使用以及怎么用。还可能向您展示如果不使用它们如何编写代码。

是编程的基本逻辑,你可以使用这些控制语句语句决定下一行要执行什么代码,这些是可以改变你的程序行为的工具。

之后的系列中,我们会一直使用所有这些控制语句,并向你们展示它们在哪里使用以及怎么用。还可能向您展示如果不使用它们如何编写代码。

好了,本期就是这些,下期再见。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值