C for
最后修改于 2023 年 1 月 9 日
C for 教程演示了如何使用 for 语句在 C 语言中创建循环。
for 语句
for 语句允许我们重复执行一个或多个语句指定的次数。
for (init; condition; increment ) {
statement(s);
}
for 语句包含三个部分:初始化、条件和增量。初始化部分只执行一次。for 语句的主体(包含在大括号内)在条件为真时执行。
如果条件返回 false,则 for 循环终止。在执行完块中的语句后,for 循环切换到第三部分,对计数器进行增量。循环持续进行,直到条件不再为真。请注意,有可能创建无限循环。
C for 示例
在第一个示例中,我们打印数字 0..9。
#include <stdio.h>
int main() {
for (int i = 0; i < 10; i++) {
printf("%d\n", i);
}
return 0;
}
在这个 for 循环中,我们打印十个值。开始时,我们将计数器 i 变量初始化为 0。这只执行一次。在条件中,我们将计数器与 10 进行比较。如果它小于 10,则执行 for 语句的主体:计数器的值使用 printf 函数打印到控制台。然后使用 ++ 运算符对计数器进行增量。for 语句的主体一直执行,直到条件为真。
$ ./simple 0 1 2 3 4 5 6 7 8 9
在下一个示例中,我们以相反的顺序打印相同的值。
#include <stdio.h>
int main() {
for (int i = 9; i >= 0; i--) {
printf("%d\n", i);
}
return 0;
}
for 语句从值 9 开始。我们使用 -- 运算符来递减计数器。
$ ./simple2 9 8 7 6 5 4 3 2 1 0
C for - 部分是可选的
for 语句的所有三个部分都是可选的。
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
int main() {
srand(time(NULL));
for (;;) {
int r = rand() % 30;
printf("%d ", r);
if (r == 22) {
break;
}
}
return 0;
}
在示例中,我们没有指定 for 语句的任何三个部分:我们创建了一个无限循环。为了结束循环,我们使用了 break 语句。
该示例计算 0..29 之间的随机值。如果等于 22,则循环结束。
$ ./random 20 18 9 4 10 23 11 28 21 29 12 8 12 16 22
C for - 多个初始化变量
在 for 语句中,我们可以有多个初始化变量。
#include <stdio.h>
int main() {
for (int i=0, j=0; i<=10 && j<=10; i++, j++) {
printf("%d\n", i*j);
}
return 0;
}
在示例中,我们初始化了两个变量:i 和 j。变量之间用逗号分隔。
$ ./multi_init 0 1 4 9 16 25 36 49 64 81 100
C for - 遍历数组
C for 语句经常用于遍历数组。
#include <stdio.h>
int main() {
int vals[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int sum = 0;
size_t length = sizeof vals / sizeof vals[0];
for (int i = 0; i < length; i++) {
sum += vals[i];
}
printf("The sum of values is: %d\n", sum);
return 0;
}
在示例中,我们遍历整数数组并计算它们的和。
size_t length = sizeof vals / sizeof vals[0];
我们计算数组的大小。
for (int i = 0; i < length; i++) {
sum += vals[i];
}
在每个 for 循环中,我们将当前值添加到 sum 变量中。
$ ./sum The sum of values is: 55
C 嵌套 for 语句
for 语句可以嵌套。
#include <stdio.h>
int main() {
const int m = 3;
const int n = 5;
int vals[m][n] = {
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15}
};
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", vals[i][j]);
}
printf("\n");
}
return 0;
}
在示例中,我们使用嵌套的 for 语句来遍历二维整数数组。
$ ./nested 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
在本文中,我们介绍了 C for 语句。