C++ Primer第五章②
C++ Primer
第五章 语句
循环语句
它重复执行操作直到满足某个条件才停下来。while和for语句在执行循环体之前检查条件,do while语句先执行循环体,然后再检查条件。
while语句
只要条件为真,while语句就重复地执行循环体
//求1-10的和
int i =1, sum = 0;
while(i<=10)
{
sum += i;
++i; //也可以这么写 sum += i++;看着是不是很装逼?
}
传统for语句
//求1-10的和
int sum = 0;
for(int i = 1; i<=10; ++i)
{
sum += i;
}
是不是超级简单啊,也很常用的。
范围for语句
我们之前也写过,这里举个例子吧(感觉这个新式的for语句也是比原来更偷懒的方法,不过它只能遍历所有的,当然遍历所有比较常用,所以C++设计者搞了这个语法)
//把vector的所有元素翻倍
vector<int> = {0, 1, 2, 3};
for(auto &r : v) //别忘了这里是引用哦,没有引用的就不会改原来容器中的值了
{
r *= 2;
}
do while语句
do while和while的唯一区别是:do while语句先执行循环体后检查条件,不管条件如何,我们都至少执行一次循环对吧。 值得注意的是,do while先执行语句后判断条件,所以不允许在条件部分定义变量。我一般不用这个,我就不高兴举例子了。
跳转语句
C++语言中提供了四种跳转语句:
- break 跳出一层循环
- continue 结束当前次迭代,继续下一次
- goto 想去哪儿去哪儿,跳到标签那儿
- return 以后介绍
下面看代码理解:
详细介绍一下goto,因为它的自由度最高,所以相应的也会有很多规定:goto语句和控制权转向的那条带标签的语句必须位于同一个函数之内。 请一定要慎用goto,因为它太强了,会打乱很多逻辑,像我一般能不用就不用,来个错误示范://while while() { while() { break; } //break跳到这,一层循环 } //continue //统计5-10的和,程序很烂,纯粹为了让你看懂continue的逻辑 int i = 1, sum = 0; while(i<10) { if(i<5) { continue; } sum += i; }
再来个你觉得错的,实际上对的的例子:goto end; int a = 10; end: a = 2; //错了,前面goto的话a根本没定义
可能你会觉得跳到begin后会重复定义sz,但其实不会,因为C++规定,goto跳回到变量定义之前意味着系统将销毁该变量然后重新创建它。begin: int sz = get_size(); if(sz <= 0) { goto begin; }