# 【知识精讲】for循环
## Part1
除了`while`循环之外,在 C++ 语言编程中,还有一种极为常见的循环——`for`循环。`for`循环的功能非常强大,它的使用条件灵活,完整地包含了`while`循环所具有的所有功能,并且还具有赋初值、循环变量自增等一系列功能。此外,在很多情况下,`for`循环层次清晰,拥有更好的可读性。
## Part2
跟`while`循环相比,`for`循环的结构稍显复杂,其语法形式如下:
~~~
for (初始语句;表达式1;表达式2) {
循环体
}
~~~
看起来有点复杂?其实这很好理解。`for`循环的执行流程是:首先执行一次初始语句,然后对表达式1 的值进行计算,并根据表达式1 的计算结果决定是否执行循环——如果表达式1 的值为`true`那就进入循环体开始执行。
当循环体执行完一次之后,计算表达式2 的值,然后再回到表达式1 并判断是否继续执行循环体;而如果表达式1 的计算结果为`false`的话,那就会退出循环。
## Part3
这样用语言描述的话,大家看起来可能会有点晕——所以我们直接来看代码吧!举个简单的例子,如果我们想要在屏幕上依次输出 111 到 100100100 的话,那么借助`for`循环,我们便可以使用这样一段代码来实现这个功能:
~~~
for (int i = 0; i < 100; i++) {
cout << i+1 <<endl;
}
~~~
对照之前介绍过的流程,我们可以分析一下`for`循环执行的过程:首先我们可以看到,`for`循环初始化了一个计数器变量`i`,并且赋给它初值 000,然后执行循环体,也就是`cout`输出语句。每执行完一次循环体之后,再执行一次`i++;`操作,对`i`进行自增。
`i`的值从 000 一直加到 999999 ,正好执行了 100100100 次——这里需要特别注意的是,对于从 000 开始计数的`i`,如果你希望循环执行`n`次的话,条件判断的形式就应该写成`i<n;`;而如果`i`是从 111 开始计数的话,那么条件判断就要写成`i<=n;`了。作为初学者,大家务必要注意这一点。
## Part4
除此之外,有几个要点还要特别强调,请大家务必注意:
* `for`循环中的初始语句,表达式1 和表达式2 都不是必须的——我们可以省略它们,但**分号不能省略**。如果将这三者全部省略的话,形式如下所示:`for(;;)`相当于`while(true)`——如果在循环体中没有可以跳出循环的语句的话(后面的章节会介绍),那么整个循环将进入死循环。
如果你在自己的电脑上写程序不小心进入了死循环的话,那么你可以按`Ctrl+C`来强行终止程序。在实际编程中,你应该小心地避免程序陷入死循环。
## Part5
* `for`循环带有初始语句——从上面的例子中我们可以看到,我们在初始语句中使用`int i=0;`对计数变量`i`进行了声明。这种写法定义的变量只在循环内部有效,用途专一而明确,可以有效增强程序的可读性而不出错,建议大家尽量都这么写,养成良好的编程习惯。
此外,初始语句中可以定义多个变量,例如`int i=0,j=0;`,或者使用逗号连接多个表达式,例如`i=0,j=100;`
## Part6
如果循环体只有一句代码的话,那么大括号可以省略——如下所示:
~~~
for (int i = 0; i < 100; i++) cout << i+1 << endl;
~~~
但是这么做容易破坏代码的可读性,所以不推荐大家使用这种写法。
## Part7
任意两个循环结构,或者是循环结构与选择结构之间,都可以自由地嵌套使用。比如说,我们可以将两个`for`循环嵌套,如下所示:
~~~
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 12; j++) {
循环体
}
}
~~~
对于这个循环来说,内层循环执行 121212 次,外层循环执行 101010 次,这样算下来整个循环体一共执行了 12∗10\=12012\*10=12012∗10\=120 次
- 教材介绍
- 《编程初学入门常识》
- 什么是程序语言
- 【知识精讲】编程与编程语言
- 【选择测试】编程语言分类
- 【知识精讲】高级语言分类
- 【选择测试】编译与解释
- 【选择测试】程序员笑话-Java
- 熟悉键盘上用于编程的键位
- 【知识精讲】认识你的键盘
- 【知识精讲】中文和英文字符
- 【匹配测试】识别中英文符号
- 【选择测试】中英文符号的影响
- 【伴随编程】不要使用中文引号
- 【伴随编程】不要使用中文分号
- 【伴随编程】正确地输入符号
- 【选择测试】找出程序中的错误
- 初始工程师思维
- 【知识精讲】二进制思想
- 【选择测试】程序员笑话-凑整
- 【知识精讲】闭合的逻辑
- 【选择测试】程序员笑话-条件
- 程序员职业与生活
- 【知识精讲】程序员的发展方向
- 【知识精讲】程序员的装备
- 【知识精讲】程序员的健康
- 【选择测试】做一名健康的程序员
- 《C++程序设计》
- 前言
- 【知识精讲】编程与计算机科学
- 【知识精讲】编程与软件工程
- 【知识精讲】如何学习编程
- 你好C++
- 【知识精讲】你好,C++
- 【知识精讲】C++程序是如何开发的
- 【知识精讲】成为一名Power User
- 【伴随编程】让我们一起说你好
- 【知识精讲】你的第一个C++语言程序
- 【伴随命令】编译、运行你的程序
- 【伴随编程】将变量流式输出
- 【选择测试】变量的作用域
- 【知识精讲】变量与数据类型
- 【匹配测试】C++语言的入门概念
- 【知识精讲】在程序中学会换行
- 【选择测试】正确地换行
- 简单数学运算
- 【知识精讲】重新认识基本运算
- 【选择测试】运算符的理解
- 【伴随编程】做一下简单的运算
- 【伴随编程】a 的 n 次方
- 【知识精讲】数学函数
- 【伴随编程】让C++语言变成计算器
- 【伴随编程】计算球的体积
- 【匹配测试】数学世界知多少
- 【知识精讲】在程序中添加注释
- 【选择测试】正确地写注释
- 从伴随输入到变量地址
- 【伴随编程】 一个数字复读机器
- 【选择测试】理解标准输入输出
- 【伴随编程】一个加法计算器
- 【程序设计】A+B+C问题
- 【伴随编程】简单的I/O格式控制
- 【知识精讲】地址与取地址符
- 【伴随编程】看看我们的地址
- 习题一:面积与周长
- 【程序设计】矩形面积与周长
- 【程序设计】三角形面积与周长
- 【程序设计】圆形面积与周长
- 程序中的是与非
- 【知识精讲】是非的表示与关系运算
- 【伴随编程】验一验关系运算式
- 【选择测试】关系运算式求值
- 【知识精讲】如果的意义
- 【伴随编程】分段函数求值
- 【知识精讲】如果之后的如果
- 【伴随编程】五则运算器
- 【选择测试】分支的嵌套
- 【伴随编程】问号表达式
- 【知识精讲】是非之间的逻辑组合
- 【伴随编程】判断闰年
- 【程序设计】日期合法性
- 【知识精讲】多路顺序结构
- 【知识精讲】在程序中学会缩进
- 【选择测试】正确的缩进
- C++程序中的苦力
- 【知识精讲】使用循环结构
- 【选择测试】对比两种循环
- 【伴随编程】使用while循环
- 【填空测试】理解循环结构
- 【知识精讲】自减和自增运算符
- 【伴随编程】使用自增运算符
- 【知识精讲】for循环
- 【选择测试】for循环的使用
- 【程序设计】一大波好玩儿的程序
- 《代码能力快速提升》
- 《基础数据结构》
- 《搜索入门》
- 《动态规划基础》
- 《数论和基础数学》
- 《图和数基础》