ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2022-03-20 13:33:07  阅读:245  来源: 互联网

标签:知识点 循环体 08 C++ while 循环 测试 expression 表达式


文章目录


前言

在编译过程中,我们常常需要有执行重复操作和决策的工具,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;
}

标签:知识点,循环体,08,C++,while,循环,测试,expression,表达式
来源: https://blog.csdn.net/qq_39544982/article/details/123538560

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有