C++ 中的 for 循环条件拆解
  EX74bkH1mmrD 2023年11月02日 38 0
引子

CSP-J真题中,for循环后面括号内的几个表达式组形式特别……

C++ 中的 for 循环条件拆解_for循环


for循环的格式
for (表达式一; 表达式二; 表达式三)
{
    循环体;
}

示例代码:循环输出1-100

for (int i = 1; i <= 100; i++)
{
    cout << i << " ";
}
for循环的执行顺序

①表达式一(只执行一次) ②表达式二 ③循环体 ④表达式三 ②表达式二 ③循环体 ……

【④-②-③】 不断重复执行,直到②为假。


拆分解释

表达式一:变量初始化表达式

表达式二:执行循环的条件(关系表达式)

表达式三:累加(累减),累计作用

三个表达式一般配合使用,但是特殊情况下,有可能会出现如题比较特别的形式。但是不管何种形式,for后面的括号内必然是三个表达式,包含空表达式即只有一个分号。两个分号分隔出来三个表达式。

表达式一

如果表达式一中的变量已经在前面定义了,那么表达式一可以空着,就是空表达式,空表达式只有一个分号结尾,但是必须有分号结尾。

如题,表达式一,是一个空表达式。

表达式二

表达式二是一个条件,是一个关系表达式,它的结果是布尔类型,所以只要符合结果是布尔类型的表达式就可以作为表达式二(一个变量加一个分号也组成一个表达式)。

既然表达式二是一个布尔类型,那么根据隐式转换为布尔类型“非零即真”的原则,只要结果为0,就是假,那么结束循环;否则都是真,继续执行循环。

如题,表达式二是一个数值变量n,那么当n的值为0时,结束循环;只要n的值不为0,就继续执行循环体。n的值是根据什么得出的呢,是根据表达式三的计算结果。

表达式三

表达式三是一个累计控制的表达式,可以对循环条件造成影响。

如题通过表达式三算出来n的值,直到结果为0的时候,表达式二就为假,那么就不执行循环了。

总结

除了题目中这样的写法,还有很多变体。

如题这种非常规的写法,日常中极少用到,日常遇到类似的功能,使用while循环或者do-while循环实现就可以。

这些非常规写法,也就是会出现在竞赛类的题目中。所以我们日常中不要这样写,但要明白各种变体表现的是什么意思。









【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

EX74bkH1mmrD