首页 > 编程笔记 > C语言笔记 阅读:49

C语言for循环的用法(非常详细,附带实例)

在 C语言中,for 循环也是一种常用的循环结构,其语法形式如下:
for (计数器设置初始值; 循环条件; 计数器更新)
    循环行为

每次循环开始时,先执行计数器设置初始值,然后判断循环条件是否为真。如果循环条件为真,则执行循环体语句,然后执行计数器更新,再次判断循环条件是否为真,如此循环下去,直到循环不再为真,循环结束。

和 while 循环一样,for 循环也仅对其后一条语句产生效果。如果要循环多条语句,则需要使用花括号将它们组合成一条复合语句。
for (计数器设置初始值; 循环条件; 计数器更新)
{
    循环行为1
    循环行为2
    循环行为3
    ...
}
例如,用 for 循环实现 1~100 的求和代码:
#include <stdio.h>
int main()
{
    int i, sum = 0;
    for(i = 1; i <= 100; i++)
    {
        sum = i + sum;
    }
    printf("%d %d\n", i, sum);
    return 0;
}
在程序中,变量 i 是在循环外进行声明的,这意味着在整个 main() 函数中都可以使用变量 i。因此,在 for 循环中或 printf() 中都使用了变量 i。

如果变量 i 仅作为计数器使用,并且在循环结束后并不关心其值,则可以将变量 i 声明为计数器初始化时的局部变量,这样变量 i 只能在 for 循环中使用,而循环外无法使用变量 i。具体代码如下:
#include <stdio.h>
int main()
{
    int sum = 0;
    for(int i = 1; i <= 100; i++)
    {
        sum = i + sum;
    }
    printf("%d\n", sum);
    return 0;
}
在早期的 C 语言标准中,for 循环的语法规则较为严格,初始化计数器必须定义在 for 循环外部。但是,在较新的 C语言标准中,这种限制已经被取消了。现代的 C语言标准允许在 for 循环的初始化计数器中进行变量的定义操作。如果你使用的是较旧的编译器,请注意这个问题,否则可能会产生报错而无法运行。

下面再举一个简单的例子,用 for 循环输出 0~100 的所有偶数:
#include <stdio.h>
int main()
{
    for(int i = 0; i <= 100; i = i + 2)
    {
        printf("%d ", i);
    }
    return 0;
}
程序运行结果为:

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100

for循环的其它用法

for 循环的括号内有三个部分,它们可以写在其他地方,也可以不写。

1) 省略计数器初始化

在下面的实例中,计数器不是在 for 循环的括号内初始化的,而是在循环外初始化的。
#include <stdio.h>
int main()
{
    int i = 0; // 在此处初始化计数器
    for(; i <= 100; i = i + 2)
    {
        printf("%d ", i);
    }
    return 0;
}

2) 省略计数器更新

在下面的实例中,计数器不是在 for 循环的括号内更新的,而是在循环体内更新的。
#include <stdio.h>
int main()
{
    for(int i = 0; i <= 100; )
    {
        printf("%d ", i);
        i = i + 2; // 在此处更新计数器
    }
    return 0;
}

3) 省略循环条件

在下面的实例中,我们让循环条件为空,因为没有循环条件,所以循环会无限执行,导致死循环。
#include <stdio.h>
int main()
{
    for(int i = 0; ; i = i + 2)
    {
        printf("%d ", i);
    }
    return 0;
}

你如果只是想要一个死循环,那么可以对 for 循环括号中的所有三个部分都不进行编写,或者编写一个始终为真的表达式。以下三个例子都是死循环,但是 while 循环不能省略循环条件:
for(;;)
    循环行为
for(;100;)
    循环行为
while(1)
    循环行为
在使用循环时还需要注意一个问题,不要在 while 或 for 后面加分号。初学者很容易犯这样的错误,认为 while 的循环条件或 for 循环语句也需要以分号结尾,如以下代码所示。
for(int i = 0;i <= 100; i++);
    循环行为1
while(i <= 100);
    循环行为2
while 和 for 只对它们后面的第一条语句产生影响,而分号将构成一个空语句。这时,虽然可以编译成功,但是每次循环仅执行空语句。

相关文章