C++控制流语句

142 阅读5分钟

上一篇:C++循环

上一篇:C++指针

1. 概述

这篇主要讲的是控制流语句是上篇C++循环的延续。控制流语句与循环语句一起工作。控制流语句让我们可以更好的控制这些循环的实际运行。我们有三个主要的控制流语句,分别是continuebreakreturn。它们分别做不同的事情。

continue:只能在循环中使用,基本上,continue表示如果还有下一次迭代的话,就跳过当前循环剩余代码进入这个循环的下一个迭代,如果没有下一次迭代,循环就会结束。

break:主要用于循环中,然后,它也会出现在switch语句中。这里讨论循环,break的意思是跳出循环,就是终止循环。

ruturn:使用这个会直接跳出你的函数,终止函数。如果你在一个函数中使用了return关键字,你会退出这个函数,当然函数可能需要一个返回值。如果只有return,这种适用于void函数。如果你的函数需要返回值,那么你需要为return提供一个值。

2. 案例

接上篇循环的例子

image.png

我们调整下代码

image.png

F5运行代码

image.png

可以看到打印了"Hello World"5次。

1. continue

首先,我们来使用continue

如果我们在循环体最后一行加上continue,这个实际上不会影响for循环的行为。

image.png

F5运行程序

image.png

因为,这已经是循环体的结尾了,我们没有跳过什么。

然而,如果我们在循环体的第一行加上一段代码块如下

image.png

F5运行程序

image.png

可以看到只打印了两次,从第一个开始,每两个迭代会跳过一个。一个更好的解释这个问题的方式,使用数值来记录,所以我们将每次迭代的变量i也打印出来

image.png

F5运行程序

image.png

可以看到只运行奇数迭代的打印。也就是说当i等于0时,0模2的结果是0,程序会continue,跳过了下面的日志打印。然后,i加1,1模2的结果不为0,会打印日子,以此类推。

我们这里搞简单点,如,当i > 2时,就continue

image.png

F5运行程序

image.png

可以看到,当i等于0, 1, 2都会打印日志。当i等于3, 4时,程序不会打印日志。

以上就是continue的大致内容。它的意思就是当continue被运行时,它将跳到循环的下一个迭代。

我们通过断点来调试,更深入的了解。

image.png

按下F5运行程序

数遍悬停在变量i上

image.png

可以看到这里的变量i是0,0 > 2的条件显然返回false,不会触发continue。

我们按下F10

image.png

image.png

所以他会直接打印日志。

当i等于1, 2时也一样。

然后当i等于3时

image.png

按F10

image.png

3大于2,可以看到到continue这一行了。

继续F10

image.png

可以看到到for循环的第一行,没有执行循环的里面的log函数,直接跳到了下一次迭代,然后执行i++,然后判断i < 5条件。

继续F10

image.png

如此重复。

2. break

下面,我们来看看break,将continue替换为break,并去掉断点,如下

image.png

F5运行程序

image.png

程序运行结果看上去和使用continue时一样。

然而,我们将代码改成如下

image.png

这也是使用continue时使用了的案例

按下F5运行程序

image.png

可以看到没有打印任何东西。一旦程序到达break语句,循环就结束了。

我们可以在if条件那行加上断点

image.png

F5运行程序

image.png

可以看到i等于0,也就是会走break分支

我们按下F10

image.png

继续F10

image.png

可以看到,执行完break,循环直接结束了,这就是break,完全跳出循环。

当然,这些控制流语句可以用在所有的循环语句中,因此for、while、do while循环,工作方式是一样的。

3. return

接下来来看看return语句。

我们的main函数是一个需要返回int值的函数。所以我们如果使用return,就需要为return提供一个int值。也就是我们不能直接使用return;

例如,

image.png

我们单文件编译此文件。ctrl + F7

image.png

可以看到编译报错,因为程序声明要求必须返回值。

好,我们给它返回一个值0

image.png

单文件编译此文件。ctrl + F7

image.png

编译通过了。

我们F5运行程序,会发现程序立马退出了。因为我们的程序没有运行到std::cin.get();std::cin.get();这个语句是保持我们的窗口打开的语句,以期待我们输入东西。

我们在if条件那里加上断点

image.png

F5运行程序

image.png

我们按下F10

image.png

可以看到,程序到了return 0;那行,将要执行return语句

继续F10

image.png

可以看到,执行完return语句,程序直接跳到main函数的结尾大括号了,因为这个函数现在要结束了。

关于return语句。需要注意的是,它不仅仅可以在循环中使用。这点和continuebreak不同,return可以使用在任何地方。

这些控制流语句就是控制你的代码如何流动的。循环语句和if语句一起,以及所有这些控制流语句,就是编程的基本逻辑。我们可以使用这些工具来控制程序的流程。

上一篇:C++循环

上一篇:C++指针