优秀的编程知识分享平台

网站首页 > 技术文章 正文

C++学习目标:最简单实用的循环语句介绍(附图说明)

nanyue 2024-07-18 22:19:09 技术文章 11 ℃

循环语句(loop statement)根据一个表达式的计算结果是否为true,决定是否重复地执行一个语句块。主要有三种循环语句:for语句、while语句和do while语句。(建议先学习《语句和条件语句介绍》

(1) for语句

for语句的语法形式如下:

for(初始语句; 循环判断条件; 迭代表达式)

{

语句块

}

“初始化语句”一般用来对循环控制变量进行初始化赋值,可以为空语句。

“循环判断条件”在每次循环开始前均执行一次,仅当其计算结果为true时才可以执行“语句块”。一旦其计算结果为false,则循环终止,该循环语句执行结束。所以循环执行次数一般等于该判断计算为true的次数。

“迭代表达式”在每轮循环完成后(即“语句块”执行完后)执行一次,该表达式一般用来修改循环控制变量。如果循环判断条件首次计算结果为false,则它永远不会被执行。

举个例子,如下for语句:

for(int iIndex=0; iIndex<2; ++iIndex)
{
	std::cout << iIndex << std::endl;
}

则该语句执行过程完整步骤如下:

1. 执行初始化语句,即int iIndex=0;

2. 首次执行循环判断条件,即iIndex<2;此时变量iIndex值为0,该表达式结果为true,则进入循环体

3. 执行循环体语句块,即std::cout << iIndex << std::endl;

4. 执行迭代表达式,即++iIndex。变量iIndex值变化为1

5. 第二次执行循环判断条件,即iIndex<2;此时变量iIndex值为1,该表达式结果为true,则进入循环体

6. 执行循环体语句块,即std::cout << iIndex << std::endl;

7. 执行迭代表达式,即++iIndex。变量iIndex值变化为2

8. 第三次执行循环判断条件,即iIndex<2;此时变量iIndex值为2,该表达式结果为false。整个for语句结束

可参见MFC库文件“vector”里如下代码的用法:

(2) while语句

while语句的语法形式如下:

while(循环判断条件)

{

语句块

}

其语句含义为:当循环判断条件结果为true时,循环执行语句块,直至循环判断条件结果为false为止。

对比for语句,while语句语法结构未显式设置“初始化语句”和“迭代表达式”。该语句在实际使用时,一般将“初始化语句”仿真循环语句前,将“迭代表达式”包含在语句块里,即:

初始化语句

while(循环判断条件)

{

语句块

迭代表达式

}

显而易见,for语句和while语句可以很方便地互相转化。

可参见MFC库文件“wincore.cpp”里如下代码的用法:

(3) do while语句

do while语句的语法形式如下:

do

{

语句块

}

while(循环判断条件);

注意:do while语句需以分号(;)结束

其语句含义为:循环执行语句块,直至循环判断条件结果为false为止。

对比while语句,do while语句特点是其循环语句块至少会被执行一次。

可参见MFC库文件“afxwin.h”里如下代码的用法:

(4)break语句

break语句可用来终止整个循环语句。当循环语句多层嵌套时,break仅能跳出包含该语句的最里面循环语句。如:

for(int iIndex=0; iIndex<10; ++iIndex)
{
	for(int iIndex2=10; iIndex2>0; --iIndex2)
	{
		if (iIndex > iIndex2)
		{
			break;
		}
	}
}

该break语句每次执行均会终止iIndex2变量所在的for循环语句。

(5)continue语句

continue语句可用来跳过当前正在执行的循环体语句块里的后续语句,但不能终止整个循环语句。如:

for(int iIndex=0; iIndex<10; ++iIndex)
{
	if (5 == iIndex)
	{
		continue;
	}
	std::cout << iIndex << std::endl;
}

该continue语句会在第6次执行循环语句块时跳过,导致下方的std::cout打印语句不被执行。但后续的第7~10次循环依然会执行打印。

(6) 实用说明

  • for语句的“初始化语句”应避免使用空语句,且尽量仅初始化一个循环控制变量。
  • “迭代表达式”应尽量简单,一般使用自增、自减操作符。
  • 复杂的循环语句应设置合理的防护,避免死循环。
  • 多层循环嵌套应计算时间复杂度,避免程序执行效率过低。
  • 多使用STL提供的算法来替代循环语句。

学习目标“最简单的循环语句介绍”已完成[再见]

最近发表
标签列表