很多情况下都需要程序执行重复的任务,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非表达式和语句