前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EasyC++20,while和do while循环

EasyC++20,while和do while循环

作者头像
TechFlow-承志
发布2022-08-26 16:48:47
8640
发布2022-08-26 16:48:47
举报
文章被收录于专栏:TechFlow

作者 | 梁唐

大家好,我是梁唐。

这是EasyC++系列的第20篇,简单聊聊C++当中的while循环用法。

while循环

while循环是没有条件初始化也没有条件更新的循环,它只有测试条件以及循环体。可以理解成类似这样的for循环:

代码语言:javascript
复制
for (; i < n;) {
    
}

while循环写成这样:

代码语言:javascript
复制
while (test-condition) {
    body;
}

圆括号当中是测试条件,当测试条件为true的时候,循环执行,为false时退出。

很显然,如果我们在循环体当中不对条件的变量进行改动的话,这个循环会无限执行,根本不可能退出。比如下列代码:

代码语言:javascript
复制
int i = 0;
while (i < 5) {
    cout << "hello" << endl;
}

因为我们没有在循环体当中对i的值进行修改,所以它永远也不可能满足>=5的退出条件,因此这个循环会无限运行。这样无限运行的循环成为死循环。

所以为了循环能正常退出,我们一定要记得在循环体当中加入确保循环会结束的逻辑。

do while循环

do while循环和for循环以及while循环不同,它是出口条件,而非入口条件。

什么意思呢,也就是说do while循环是先执行循环体当中的内容, 再进行判断是否终止。而for循环以及while循环是先执行条件判断,满足条件再执行循环体。也就是说do while循环可以确保循环体至少运行一次。

代码语言:javascript
复制
do {
    body;
} while (test-condition);

基于范围的for循环(C++11)

在C++11当中新增了一种特性,可以基于范围进行for循环,有些类似于Python当中的循环操作。例如:

代码语言:javascript
复制
double prices[5] = {1.0, 2.3, 3.5, 6.1, 2.1};

for (double x: prices) {
    cout << x << endl;
}

相当于我们用一个变量x去遍历prices数组当中的所有元素。当然这样拿到的x是一个拷贝,相当于:

代码语言:javascript
复制
for (int i = 0; i < 5; i++) {
    double x = prices[i];
}

我们直接去修改这里的x是不会生效的,因为它只是一个拷贝,想要对数组当中的元素进行修改的话,可以在x之前加上一个取地址符,将它设置成引用:

代码语言:javascript
复制
for (double &x : prices) {
    x = 5.0;
}

这样当我们对x修改的时候,就相当于对数组当中的元素进行修改了。这里只是简述这种循环方式,关于其中的一些技术细节,将会在之后的文章当中进行讨论。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Coder梁 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • while循环
  • do while循环
    • 基于范围的for循环(C++11)
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档