for (表达式 1; 表达式 2; 表达式 3)
陈述;
首先,需要强调两点:
1)表达式1、表达式2、表达式3之间用分号分隔; 切勿将它们写为逗号。
2) 切勿在 for (表达式 1; 表达式 2; 表达式 3) 后添加分号。 很多新手都会犯这个错误——忍不住在后面加一个分号。
因为for循环只能控制其后的一条语句,而在C语言中,分号也是一条语句——空语句。 所以如果最后加一个分号,for循环就只能控制这个分号,下面大括号里的语句不属于for循环。
我们看一下它的执行情况: 求解表达式1。求解表达式2。如果其值为true,则执行for语句中指定的嵌入语句,然后执行步骤3;如果为真,则执行for语句中指定的嵌入语句,然后执行步骤3; 如果表达式2的值为假,则结束循环并转到步骤5。求解表达式3。返回上面的步骤2并继续。 当循环结束时,执行for语句下面的语句。
从这个执行过程可以看出,“表达式1”只执行了一次,在“表达式2”、“表达式3”和“嵌入语句”之间进行循环。
for 语句最简单的形式是:
for(为循环变量分配初始值;循环条件;循环变量增量)
陈述;
让我写一个程序来求 1+2+3+4+…+100 的和。
# includeint main(void) { int i; int sum = 0; //sum的英文意思是“总和” for (i=1; i<=100; ++i) //++是自加的意思, ++i相当于i = i + 1 { sum = sum + i; /*等价于sum += i;但是不建议这么写, 因为sum = sum + i看起来更清楚、更舒服*/ } printf("sum = %d\n", sum); return 0; }
输出是:
总和=5050
该程序的功能是求 1+2+3+4+…+100 的和。 如果不使用循环,则添加一次需要1条语句,添加100次则需要100条语句。 这里是从1加到100。如果从1加到10000,就需要10000条语句。 但是有一个循环非常方便。 您可以添加任意数量,只需更改一个参数即可。 所以循环很重要。
我们按照执行流程来看看上面的程序是如何执行的。
1)首先定义一个循环变量i。 定义时不需要为其指定初始值。 您还可以在 for 循环中为其分配初始值。 但如前所述,最好在定义变量时对其进行初始化。 如果值不确定,则初始化为0。因此,在程序中,定义i时也可以给它赋一个初始值。 那么for循环中的“表达式1”可以省略,但分号不能省略。
这种情况下,执行时,跳过步骤1,直接进入步骤2,其他不变。 所以程序也可以这样写:
# includeint main(void) { int i = 1; int sum = 0; for (; i<=100; ++i) { sum = sum + i; } printf("sum = %d\n", sum); return 0; }
当然,添加表达式 1 是可以的,但在最坏的情况下,您将不得不重新分配该值。
2)然后定义一个用于存储“sum”的变量sum,并赋初值为0,然后进入for循环:先求解表达式1,即赋初值给变量i,i=1; 仅表达式1 如果执行一次,则不会再次执行。 然后求解表达式 2 if 1