C++ for循环用法详解(通俗易懂,新手必看)
除了 while 和 do while 循环语句,C++ 还提供了 for 语句实现循环结构,本节带大家系统学习 for 语句的用法。
在 C++ 中,for 循环结构的语法格式如下:
因此,它通常包含一个循环变量(在某些情况下也可以成为循环索引),这个循环变量像一个游标一样在循环范围内移动,从而依次访问循环范围内的各个元素。
for 关键字之后的三条语句就是对这个循环变量进行操作,使其按照某种规律在循环范围内移动,从而遍历整个范围。
例如,
因此,条件判断语句主要用于检查循环变量的值是否在循环范围的结束位置之内。如果在循环范围之内,条件判断语句的值为 true,for 循环将开始下一次循环,并继续执行循环体内的语句。如果循环变量的值超出了循环范围,条件判断语句的值为 false,for 循环将终止。
例如,
例如,
for 循环的执行过程如下图所示:

图 1 for循环的执行流程
在整个循环过程中,循环变量的值会按照特定的规律从循环的起始位置递增或递减到循环的结束位置。这意味着,在每次循环中,循环变量的值会不断变化。利用变化的变量值,我们可以访问循环范围内的各个数据。
例如,
根据我们对 for 循环各个部分的分析,可以得出计算 1~100 所有整数之和的 for 循环:
任何循环都必须在一定条件下结束,可能是条件判断语句的值变为 false,也可能是在循环内部满足某个条件后使用 break 关键字结束循环。总之,循环必须有结束的机会,否则就会变成死循环,导致循环语句后面的代码无法执行,程序自然也得不到正确的结果。
例如,在前面的例子中,0!=nInput 这个条件判断语句的值有机会变成 false,即当用户输入的 nInput 的值为 0 时。因此,这个循环有机会结束,而不会成为死循环。
循环的结束往往由条件判断语句决定,所以我们在处理条件判断语句时要格外小心。如果处理不当,可能导致条件判断语句的值始终是 true,从而使循环永远无法结束,形成死循环。例如:
在 C++ 中,for 循环结构的语法格式如下:
for( 初始化语句;条件判断语句;更改语句 ) { 循环体语句; }for 循环语句通常用于表达在某个范围内的循环现象,比如:
- 在公司 100 名员工范围内,每名员工都增加 10000 元工资;
- 在 1~100 这个范围内,每个数字都累加到总和中。
因此,它通常包含一个循环变量(在某些情况下也可以成为循环索引),这个循环变量像一个游标一样在循环范围内移动,从而依次访问循环范围内的各个元素。
for 关键字之后的三条语句就是对这个循环变量进行操作,使其按照某种规律在循环范围内移动,从而遍历整个范围。
1) 初始化语句
初始化语句在进入 for 循环语句时被执行一次,主要用于定义并初始化循环变量,将其定位到循环范围的起始位置。也就是说,它确定了循环范围的起点。例如,
int i = 1
就是一个典型的初始化语句,它定义了循环变量 i 并将其赋值为 1,表示循环从 1 开始。2) 条件判断语句
每次循环开始时,条件判断语句都会被执行一次。如果其值为 true,则会继续执行循环体的语句。反之,则直接结束整个 for 循环。因此,条件判断语句主要用于检查循环变量的值是否在循环范围的结束位置之内。如果在循环范围之内,条件判断语句的值为 true,for 循环将开始下一次循环,并继续执行循环体内的语句。如果循环变量的值超出了循环范围,条件判断语句的值为 false,for 循环将终止。
例如,
i <= 100
是一个典型的条件判断语句,它在每次循环开始之前判断循环变量 i 是否小于等于 100,以决定是否开始继续执行循环。3) 更改语句
更改语句(也成为迭代语句)在每次循环体语句执行结束后被执行,主要用于修改循环变量的值,使其按照某种规律,逐渐从循环起点变化到循环终点。在这个过程中,我们可以根据不断变化的循环变量的值访问循环范围内的每个元素,这一过程通常称为遍历。例如,
++i
是一个典型的更改语句,它使循环变量 i 在每次循环后增加 1,使其向循环范围的结束位置移动一步。这样,循环变量 i 就可以从循环起点 1 递增到循环终点 100,使我们能够访问循环范围内的每个元素。4) 循环体语句
循环体语句则定义了循环的具体操作。在执行时,for 循环首先执行一次初始化语句,然后进行条件判断。如果其值为 true,则意味着满足循环条件,程序会继续执行循环体语句。完成循环体语句后,接着执行更改语句,用于修改循环变量的值。随后,再次进行条判断,以确定循环条件是否仍然满足。如果满足,则开始下一次循环。整个过程会不断重复,直到条件判断的结果值为 false,即不再满足循环条件。for 循环的执行过程如下图所示:

图 1 for循环的执行流程
在整个循环过程中,循环变量的值会按照特定的规律从循环的起始位置递增或递减到循环的结束位置。这意味着,在每次循环中,循环变量的值会不断变化。利用变化的变量值,我们可以访问循环范围内的各个数据。
例如,
nTotal += i;
是一个典型的循环体语句,每次循环时,它会将循环变量值 i 加到 nTotal 中,而循环变量 i 的值又是从 1(int i = 1)~100(i <= 100)逐渐递增的(++i)。因此,nTotal 依次加上了 1、2、3、…、99、100,最终得到的就是从 1~100 所有整数的和。根据我们对 for 循环各个部分的分析,可以得出计算 1~100 所有整数之和的 for 循环:
// 计算 1~100 所有整数的和 // 记录和值 int nTotal = 0; // 使用 for 循环,将 1~100 的整数逐个与 nTotal 相加 for (int i = 1; // 循环起点 i <= 100; // 循环终点 ++i) // 循环变量值的变化规律 { // 将整数累加 nTotal += i; } cout << "1 到 100 之间所有整数的和是" << nTotal << endl;
死循环
所谓死循环,是指循环没有结束的机会,会一次又一次地永远执行下去。任何循环都必须在一定条件下结束,可能是条件判断语句的值变为 false,也可能是在循环内部满足某个条件后使用 break 关键字结束循环。总之,循环必须有结束的机会,否则就会变成死循环,导致循环语句后面的代码无法执行,程序自然也得不到正确的结果。
例如,在前面的例子中,0!=nInput 这个条件判断语句的值有机会变成 false,即当用户输入的 nInput 的值为 0 时。因此,这个循环有机会结束,而不会成为死循环。
循环的结束往往由条件判断语句决定,所以我们在处理条件判断语句时要格外小心。如果处理不当,可能导致条件判断语句的值始终是 true,从而使循环永远无法结束,形成死循环。例如:
// 条件判断语句处理不当形成的死循环 // 缺失了变更语句,但仍能通过编译了 for(int i = 0; i < 10000; ) { cout << "I LOVE YOU!" << endl; }这段程序的本意是想说一万遍“I LOVE YOU!”来装情圣,但却忘记在更改语句中对循环变量 i 进行更新。这样,循环变量 i 的值始终保持为 0,而条件判断语句 i<10000 的值始终为 true,循环因此永远无法结束,形成了死循环,导致程序喋喋不休地说“I LOVE YOU!”,自然被人当成傻瓜了。如果不想从情圣变成傻瓜,就要正确处理循环的条件判断语句,尽量避免死循环的出现。