当前位置: 首页 > article >正文

【C++ Primer Plus学习记录】for循环

很多情况下都需要程序执行重复的任务,C++中的for循环可以轻松地完成这种任务。

我们来从程序清单5.1了解for循环所做的工作,然后讨论它是如何工作的。

//forloop.cpp
#if 1
#include<iostream>
using namespace std;

int main()
{
	int i;
	for (i = 0; i < 5; i++)
	{
		cout << i;
		cout << " C++ knows loops.\n";//循环体
	}
	cout << "C++ knows when to stop.\n";

	system("pause");
	return 0;
}
#endif

1.for循环的组成部分

for循环为执行重复的操作提供了循序渐进的步骤。for循环的具体工作步骤如下:

(1)设置初始值。

(2)执行测试,看看循环是否应当继续进行。

(3)执行循环操作。

(4)更新用于测试的值。

其结构为:

for(初始化;测试;更新)
    循环体

循环只执行一次初始化。

测试表达式决定循环体是否被执行。通常,这个表达式是关系表达式,即对两个值进行比较。C++并没有将测试的值限制为只能为真或假。可以使用任意表达式,C++将把结果强制转换为bool类型。因此,值为0的表达式将被转换为bool值false,导致循环结束。如果表达式的值非0,则被强制转换为bool值true,循环将继续进行。程序清单5.2通过将表达式i用作测试条件来演示了这一特点。

#if 1
#include<iostream>
using namespace std;

int main()
{
	cout << "Enter the starting countdown value: ";
	int limit;
	cin >> limit;
	int i;
	for (i = limit; i; i--)
		cout << "i = " << i << endl;
	cout << "Done now that i = " << i << endl;

	system("pause");
	return 0;
}
#endif 

for循环是入口条件循环。这意味着在每轮循环之前,都将计算测试表达式的值,当测试表达式为false时,将不会执行循环体。例如,假设重新运行程序清单5.2中的程序,但将起始值设置为0,则由于测试条件在首次被判定时便为false,循环体将不被执行。这种在循环之前进行检查的方式可避免程序遇到麻烦。

更新表达式在每轮循环结束时执行,此时循环体已经执行完毕。通常,它用来对跟踪循环轮次的变量的值进行增减。然而,它可以是任何有效的C++表达式,还可以是其他控制表达式。

1.1表达式和语句

 C++中,每个表达式都有值。通常值是很明显的。

#if 1
#include<iostream>
using namespace std;

int main()
{
	int x;

	cout << "The expression x = 100 has the value ";
	cout << (x = 100) << endl;
	cout << "Now x = " << x << endl;

	cout << "The expression x < 3 has the value ";
	cout << (x < 3) << endl;

	cout << "The expression x > 3 has the value ";
	cout << (x > 3) << endl;

	cout.setf(ios_base::boolalpha);//调用设置了一个标记,该标记命令cout显示true和false,而不是1和0。

	cout << "The expression x < 3 has the value ";
	cout << (x < 3) << endl;

	cout << "The expression x > 3 has the value ";
	cout << (x > 3) << endl;

	system("pause");
	return 0;
}
#endif

1.2非表达式和语句


http://www.kler.cn/news/136639.html

相关文章:

  • SpringBoot支付回调枚举+策略+工厂模式
  • 量子纠错--shor‘s 码
  • ctfshow(41)--RCE/命令执行漏洞--或绕过
  • 我想电脑批量管理 30 台苹果手机,怎么操作更简单方便呢?
  • 基于深度学习的音乐生成与风格转换
  • iPhone当U盘使用的方法 - iTunes共享文件夹无法复制到电脑怎么办 - 如何100%写入读出
  • 51.Sentinel微服务保护
  • 架构探索之路-第一站-clickhouse | 京东云技术团队
  • C++设计模式——单例模式
  • 基于单片机GPS轨迹定位和里程统计系统
  • 全国见!飞桨星河社区五周年,邀你共赴大模型盛宴!
  • 什么是调试和性能分析工具?
  • 【广州华锐互动】VR虚拟现实技术助力太空探险:穿越时空,探索宇宙奥秘
  • 第二证券:龙头公司大手笔回购 港股今年以来回购总额逼近千亿港元
  • 基于Java封装继承多态实现的一个简单图书系统
  • 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法
  • clickhouse分布式之弹性扩缩容的故事
  • MATLAB画图分辨率、图像大小研究
  • 使用drawio的图层构建更强大的图表
  • 剪辑视频怎么把说话声音转成文字?
  • 【面试】你有使用过链路追踪技术吗?
  • 什么样的企业可以使用免费版的CRM?
  • Sql Server 2017主从配置之:发布订阅
  • TensorFlow实战教程(二十八)-Keras实现BiLSTM微博情感分类和LDA主题挖掘分析
  • 软件测试/测试开发/人工智能丨​Python运算符解析,小白也能轻松get
  • 【前端学java】java中的字符串操作(10)