C/C++教程

【C++知识点整理:08循环】

本文主要是介绍【C++知识点整理:08循环】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、for循环
    • 1.for循环的组成部分
    • 2.for循环的使用
  • 二、while循环
    • 1.while循环的组成部分
    • 2.for与while
    • 3.do while循环
  • 三、基于范围的for循环


前言

在编译过程中,我们常常需要有执行重复操作和决策的工具,C++提供了这样的一种工具。

一、for循环

1.for循环的组成部分

1.设置初始值

2.执行测试

3.执行循环操作

4.更新用于测试的值。

5.继续执行测试。

在for循环当中,初始化、测试和更新操作构成了控制部分,用()将其括起。每一个部分都是一个表达式,彼此由分号隔开。控制部分后面的语句叫循环体,只要测试的结果为非零值或true,他便被执行。

for(initialization;test-expression;update-expression)
	body;

C++语法将整个for看作一条语句——即使整个for循环中包含着一条或多条语句。

循环只执行一次初始化。通常将初始化的变量用作计算循环周期。

在测试表达式中决定循环是否被执行。通常为关系表达式,在测试表达式中,如果比较结果为真,则程序将执行循环体,false则跳出循环。在测试表达式中可以使用任意表达式,C++会将结果转换为bool类型。

for循环时入口条件循环,这意味着,在每一轮循环之前,都将计算测试表达式的值,在结果为false时,才会跳出循环。

在更新表达式中,通常在一次循环结束后触发,也就是说,更新表达式在每轮循环结束时执行,此时循环体已经执行完毕。它通常用来对跟踪循环轮次的变量的值进行增减。

在C++中,for是关键字,因此编译器不会将for视为一个函数。

2.for循环的使用

C++中,for循环通常由两种使用方式:

1.当循环体只有一条语句时:

for(int i = 0; i < 8; i++)
	body;

注意上述中的代码,并没由花括号的存在,在for循环中,循环体必须是一条语句。但在上述代码中,我们省略了花括号。

假设在循环体中包含多条语句,而对循环体进行了缩进:

for(int i = 0; i < 9; i++)
	cout << "这一位数字为:" << endl;
	cout << i << endl;

上述代码将会报错,原因是无法检测到i变量。

原因很简单,编译器在看到上述代码的时候,将会忽略缩进,因此,只有第一条语句位于循环中,后面的打印i值将会不存在于for循环中,且变量i是在for循环中定义的,当执行完for循环后,变量i的空间将会被释放,此时的变量i也就不存在了,当编译器看到打印i值时,就会提示未检测到变量i的定义。

我们想要在循环体中包含多条语句,就必须使用到花括号:

2.循环体由多条语句时,必须使用花括号:

for(int i = 0; i < 9; i++){
	int y = 89;
	cout << y << endl;
}

用花括号括起来的循环体将形成一个完整的语句块,但要注意的是,与之前的代码一样,变量y仅当程序执行该语句块中的语句时,该变量才会存在。

int j = 1;
for (int i = 0; i < 3; i++) {
	cout << j << endl;
	int j = 0;
	cout << j << endl;
};

在上述代码中,首先在for循环外定义了一个变量j,而在循环体内又定义了一个变量j,那么在声明位置到内部语句块结束的范围内,新变量将隐藏旧变量;然后旧变量再次可见。

二、while循环

1.while循环的组成部分

与for循环不同的是,while是没有初始化和更新部分的,只有测试条件和循环体:

while(test-condition){
	body;
}

在程序运行的时候,编译器首先计算圆括号内的测试条件表达式。如果该表达式为true,则执行循环体。执行完循环体后,程序返回测试条件,对它从新评估,如果为true,则继续执行循环,直到测试条件为false。

和for循环一样,while也是入口条件循环。所以,当一开始测试条件就为false的时候,程序就不会进入循环。

2.for与while

在C++中,for和while循环本质上是相同的。

正是因为这一份等效,所以在书写代码时究竟因该用谁只是风格问题,但在有些情况下,比如您设计代码时并不知道应该循环多少次时,应该使用while循环。

下述代码中的for和while实现同样的功能。

for(init-expression;test-expression;update-expression){
	statement(s)
}

init-expression;
while(test-expression){
	statement(s)
	update-expression;
}
//while改for
while(test-expression){
	body
}

/*for循环需要3个表达式,只有两个分号是必需的。
当省略test-expression时,系统默认其为true,循环将一直持续下去*/
for(;test-expression;){
	body
}

注意,下面代码由于省略了所有表达式,所以循环将一直持续下去。

for(;;){
	body
}

在设计循环时,应该记住以下几点原则来帮助我们避免一些不必要的问题。
1.指定循环终止条件。

2.在首次测试之前初始化条件。

3.在条件被再次测试之前更新条件。

3.do while循环

do while循环与for循环不同的是,for循环属于入口条件,即在执行循环体之前会进行测试,而do while是出口条件,意味着这种循环将首先执行循环体,然后再判定测试表达式,决定是否应该继续执行循环。

执行语法如下:

do{
	body
}
while(test-expression)

三、基于范围的for循环

在C++11中新增了一种循环——基于范围的for循环。使得对数组或容器类的每个元素执行相同的操作。

double price[3] = {6.8,8.6,8.9};
for(double x: price){
	cout << x << std::endl;
}

上述代码中,x表示数组price的第一个元素。显示第一个元素后,不断执行循环,而x依次表示数组的其他元素。因此,上述代码显示全部元素,每个元素占据一行。

注意下属代码中给予x取址符号,使得可以直接修改数组中的值,而不是修改数组副本的值。

double price[3] = {6.8,8.6,8.9};
for(double &x: price){
	x +=1;
	cout << x << std::endl;
}
这篇关于【C++知识点整理:08循环】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!