第六章:语句(二)

循环语句

while

while的具体语法如下图所示
在这里插入图片描述
while语句的处理逻辑分为以下三步:

  1. 判断条件是否满足,如果不满足则跳出循环
  2. 如果条件满足则执行循环体
  3. 执行完循环体后转向步骤1
int x =3;
while(x){
	std::cout << x << std::endl;
	--x;
}

注意,在while条件部分不包含额外的初始化内容

do-while

do-while的具体语法如下图所示
在这里插入图片描述

注意do-while结尾处要有分号,表示一条语句的结束

do-while语句的处理逻辑如下:

  1. 执行循环体
  2. 判断条件是否满足,如果不满足则跳出循环
  3. 如果条件满足则转向步骤1
int x =3;
do{
	std::cout << x << std::endl;
	--x;
}while(x);

注意do-while不管条件是否满足都会先执行一次循环体

注意do-while语句的条件部分不能包含变量初始化生命

for

for的具体语法如下图所示
在这里插入图片描述
for语句的处理逻辑如下:

  1. 初始化语句会被首先执行
  2. 条件部分会被执行,执行的结果如果为false,则终止循环
  3. 执行的结果如果为true,则执行循环体
  4. 迭代表达式会被求值,之后转向步骤2
for(int x = 0; x < 5; ++x){
	std::cout << x << std::endl;
}

关于for语句,我们需要注意以下几点:

  • 在初始化语句中可以声明多个名字,但是他们的基础类型一定要相同
    for (int i = 0, *p = &i; i < 9; i += 2) {
        std::cout << i << ':' << *p << ' ';
    }
    std::cout << '\n';
    
  • 初始化语句、条件、迭代表达式可以为空

    注意若条件部分为空,则默认按true处理

关于for的更多示例请参考这里

基于范围的for

基于范围的for的具体语法如下图所示
在这里插入图片描述

    std::vector<int> v = {0, 1, 2, 3, 4, 5};
 
    for (const int& i : v) // 以 const 引用访问
        std::cout << i << ' ';
    std::cout << '\n';

基于范围的for本质上是一个语法糖,编译器会将它转换为普通的for的调用方式

关于基于范围的for的具体转换形式的演变如下图所示
在这里插入图片描述
使用基于范围的for时通常我们会使用常量左值(const auto &)引用来读元素,使用“万能引用”(auto &&)来修改元素

break/continue关键字

最后我们来看一下循环语句中最常用的两个关键字

  • break:导致外围的for、基于范围的forwhiledo-whileswitch语句终止
    for (int j = 0; j < 2; j++) {
        for (int k = 0; k < 5; k++) {         //只有此循环会受到 break 的影响
            if (k == 2) break;
            std::cout << j << k << " ";
        }
    }
    
  • continue:用于跳过整个for、基于范围的forwhiledo-while循环体的剩余部分
    for (int j = 0; j < 2; j++) {
        for (int k = 0; k < 5; k++) {   // 仅此循环受 continue 影响
            if (k == 3) continue;
            std::cout << j << k << " "; // 此语句在每次 k==3 时跳过
        }
    }
    

注意breakcontinue均不能作用于多重嵌套循环的相对于break/continue的外层,多重嵌套循环的任意跳转可考虑goto语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值