先来看一段 for 循环程序:
#include <iostream>
int main()
{
using namespace std;
int i;
for (i = 0; i < 5; i++)
{
cout << "C++ knows loops.\n";
}
cout << "C++ knows to stop.\n";
return 0;
}
程序输出:
C++ knows loops.
C++ knows loops.
C++ knows loops.
C++ knows loops.
C++ knows loops.
C++ knows to stop.
程序说明:
该循环将整数变量 i 设置为 0:
i = 0
,这是循环的初始化部分,也就是循环从i = 0
开始,然后循环测试部分检查 i 是否小于5:i < 5
。如果小于 5,则程序执行接下来的语句,即循环体:cout << "C++ knows loops.\n";
。然后程序使用循环更新部分将 i 加 1:i++
。
接下来,循环开始新的周期,直到 i 更新为 5。
1、for 循环的组成
for 循环的组成完成以下步骤:
- 设置初始值;
- 执行测试,看看循环是否应当继续;
- 执行循环操作;
- 更新用于测试的值。
c++ 循环设计包括了这些要素:初始化、测试和更新操作构成了控制部分,这些操作由括号括起,控制部分后面的语句叫做循环体,只要测试表达式为 TRUE ,它便被执行:
for (initialization; test-expression;update-expression)
body
for 属于 c++ 关键字,同 if、while 一样,不属于函数,只是对程序的操作有着控制作用。
2、修改步长
在以上的示例中,实现更新操作的是表达式 i++
,但是实际上用户也可以设置其它步长,如使用 i = i + ?
:
#include <iostream>
int main()
{
using namespace std;
int i,a;
cout << "输入一个小于 50 的整数: ";
cin >> a;
cout << "现在的步长是: " << a << endl;
for (i = 0; i < 100; i = i + a)
{
cout << "i = " << i << endl;
}
return 0;
}
程序输出为:
输入一个小于 50 的整数: 16
现在的步长是: 16
i = 0
i = 16
i = 32
i = 48
i = 64
i = 80
i = 96
程序说明:程序步长由用户设置,i 在到达 96 后不再满足测试条件,循环结束。
3、表达式和语句
3.1 表达式
- 任何值或任何有效的值和运算符的组合都是表达式。
例如,10 是值为 10 的表达式,28 * 20 是值为 560 的表达式。 - 每个表达式都有值。
例如:22 + 27
的值为 49;x = 20
由两个值和一个赋值运算符组成,c++将赋值表达式的值定义为左侧成员的值,因此这个表达式的值为 20。 - 由于赋值表达式有值,因此可以编写下列语句:
a = (b = 1) + 3;
和
x = y = z = 0;
- 给表达式加上分号,就变成了语句。类似于
x + 6;
的语句也是有效的 c++ 语句,但是它知识计算了和,并未完成任何工作。
3.2 非表达式
对任何表达式加上分号都可以称为语句,但是并非所有语句去掉分号就是表达式:返回语句、声明语句和 for 语句等都不满足。比如 int a;
去掉分号后并非表达式,因为它没有值。因此下面的代码是非法的:
b = int a * 10;
cin >> int a;
因为表达式是值与运算符的结合,而 int a 显然没有值,它是一个声明。