当前课程知识点:C/C++:从基础语法到优化策略 > Final Exam > Final exam > 3.8 break and continue statements
返回《C/C++:从基础语法到优化策略》慕课在线视频课程列表
我们再讲一讲break和continue
我们前面 在switch里面提到了break
其实在所有的循环里面包含for循环 while循环
我们都会用到break或者continue
break 和 continue 他们都是可以说是改变现有的循环的规则或者运作方式
但是他们的区别在于
如果你是用break 那么他会把当前的循环直接停掉
停掉当前的循环 然后继续往下执行
如果是continue的话 那就是说
他把当前这个loop这个循环的这次这一次的循环终止掉 然后继续下一次下一次
在这给大家看这个代码可能清晰点
我们这个程序就不去运行 看结果了
我们来看 这里面是个for循环
其实while循环也是类似的
这边我们有一个break 也就说一旦break被运行
那么这个for循环就结束了
就类似于这个地方没满足break跟 break跟
这个条件没满足 它引起的效果是一样的 直接就是for结束
然后继续往下走 碰到break之后就结束就往下走
那么这是break 不管你是在if里面的break还是放到别的地方break
只要一碰到break 离他最近的这个for就结束了
但这里面有一个问题是 如果你有两个for 双重循环会怎么样
这个留作一个问题大家去思考
那如果是continue呢 continue的作用
是说假如这边这个循环要循环100次或者很多次
然后在第一次的时候我们遇到了continue
那么他会这个循环体的continue后面的部分 在这个例子里面就是这一行
不会被执行 他就不会被执行
然后下一步是干什么 下一步继续是回来
i++继续的重新来 继续循环
他只是上一次的这个循环里面 他后面的不执行
然后整个loop 整个loop还是继续的
这是他们的最大的区别
在while里面是一样的 好
那么我们再来看一个例子
这个例子其实跟break 肯定的关系不大
但是我愿意 我希望放在这儿讲就讲一讲我们前面
在读数据的时候
比如说我们定义一个int 然后从cin读一个整数进来
那么问题是 如果我们输入的不是整数 我怎么知道他输错了 输错了
实际上是这样的 我会大致解释一下cin
如果你输的是一个字母而不是整数的话
那这时候它会出错 n就会是零
但是那么出错怎么知道他出错了
其实这个表达式你可以看成一个表达式
cin 整个这个表达式 它的值就是false
也就是cin是false 其实他的表达式就是cin cin是false
然后你可以看cin他的值是什么 那就可以了
我们再来看一下cinfish这里面
这个例子 这个例子是主要就是什么呢
打印一行 让你输一个值
你输进来 那么怎么再去读这个值
这一个循环 循环 一直循环 然后 把你输进的值放到这个数组里面
数组 第一个元素 第零个元素 第一个元素 这样一次循环里放
一旦不是数值 一旦这个地方返回的是false
那这个循环就结束了
然后结束之后 那后面就会算平均值
前面你输的那些平均值 算一下
那么我们来运行一下这个例子看看
然后他提示输第一条鱼的 最多是五条鱼 第一条鱼的是 比如说是三
第二条鱼是四 第三条是五
那么假如后面我要随便输一点别的会怎么样
这个时候cin去
这个也会变成false 变成false
false之后这个条件不成立 while就会终止断掉
然后往下走 然后算出来现有的三条鱼的平均的重量是三 是四
345的平均值是四对吧
然后出来 所以说这个cin
当然我们也可以这样 我们可以也可以在这里面去判断
if cin这样来判断是不是正确的数
这样你也可以判断他有没有出错
或者说这样if cin break这样是可以的
好 这个是我们的输入出错的时候 那输入出错之后 一旦这个出错了
那么你再去从这里面读的话他还是错的
他会告诉你你读这个还是是因为cin的值一旦变成false
所以你需要是有个专门的函数去清理这个状态
否则他会一直是错的 后面都会有问题
-Quiz 1
-Quiz 2
-3.3 Relational expressions (> < ==)
-3.5 Branching statements (if else)
-3.8 break and continue statements
-Quiz 3
-4.4 Structures, Unions and Enumerations
-Quiz 4
-5.3 Allocate memory: C++ style
-Quiz 5
-6.3 Recursion and pointer to functions
-Quiz 6
-Quiz 7
-8.1 C/C++ with ARM development board
-Quiz 8
-9.2 Constructors and destructors
-Quiz 9
-10.1 Operators in cv::Mat in OpenCV
-10.4 Automatic conversions and type casts for classes
-Quiz 10
-11.1 Dynamic memory and classes
-11.2 New and improved String class
-11.3 Using pointers to objects
-Quiz 11
-12.2 Static and dynamic binding
-12.3 Access control: protected
-12.4 Inheritance and dynamic memory allocation
-Quiz 12
-13.1 Constructor and assignment
-13.2 Classes with object members
-Quiz 13
-14.1 CNN for image classification
-Quiz 14
-15.3 RTTI and type cast operators
-Quiz 15
-Final exam