1.语法:
for (起始表达式 ; 条件表达式; 末尾循环体) { 循环语句 }
1.1 起始表达式:
用于变量的声明和赋值.
特别地,通过这种方式定义的变量, 只能在这整个 for 循环语句中使用,对于该循环语句之外的代码,这个变量视为未声明.
若已经在起始表达式中定义过一个变量,那么在这整个for循环语句中都不能再次定义这个变量,只能赋值.
起始表达式可以不写,但是表达式后的分号还是要打.
起始表达式只在第一次循环之前执行一次, 不参与之后的循环.
如:
#include <iostream>
using namespace std;
int main()
{
double a = 15.45f;
for (int a =0; a < 100; a++) //a从每次增加1直到99,100时不再执行
{
cout << sizeof(a) << endl; //检查变量a占用的内存空间大小
}
cout << a << endl;
cout << sizeof(a) << endl; //检查变量a占用的内存空间大小
return 0;
}
这段代码能够通过编译,并且输出100个4,之后输出15.45,再输出一个8.
从中我们可以知道,起始表达式定义的变量与该循环语句外的同名变量是相互独立的,并不冲突.但为避免混淆,最好还是不要这样做.
1.2 条件表达式:
相当于while 和 do……while循环中的条件判断, 实际上是一个逻辑表达式.
当条件表达式值为1(true) 时, 才执行下面的循环语句.
注意,判断条件表达式为真后, 先执行{ 循环语句 } , 再执行末尾循环体.
条件表达式也可以不写, 不写时视为值为1, 即一直执行循环语句,但后面的分号还是要打.
条件表达式中使用的变量必须是已经定义过的变量,如在起始表达式中定义过,或在for循环语句之前就已经定义过.
1.3 末尾循环体:
满足条件并执行完循环语句后,再执行末尾循环体,再开始判断条件(新一轮循环).
注意末尾循环体后不要写分号.
特别地, 即便是在循环语句之后执行, 末尾循环体中使用的变量也必须是已经定义过的变量,如在起始表达式中定义过,或在 for 语句之前就已经定义过
也就是说程序读到 for 这一行的时候就会检查末尾循环体的合法性.
如果这样就是错的,因为 for 之前没有声明过变量 b.
for (int a = 0; a < 100 ; b++)
{
int b = 0;
cout << b << endl;
}
1.4 循环语句
for 循环的循环语句中,可以直接使用循环语句外声明的变量.
但是, 你也可以重新声明循环语句外已经定义过的变量,即使它们同名,也不会相互冲突.
但为避免混淆, 最好还是不要这样做.
#include <iostream>
using namespace std;
int main()
{
double a = 15.45f;
int b = 0;
for (int a =0; b < 20; b++)
{
double b = 15.45;
cout << sizeof(b) << endl;
}
cout << a << endl;
cout << sizeof(b) << endl;
return 0;
}
1.5 示例
for ( int i = 0; i < 100; i++)
{
cout << i << endl;
}
这段代码意为输出 0~99 的所有整数,包括99.
2 区别
for循环相比 while 和 do……while 循环, 语句更加简洁、清晰.