C语言for循环的用法(非常详细,附带实例)
在 C语言中,for 循环也是一种常用的循环结构,其语法形式如下:
每次循环开始时,先执行计数器设置初始值,然后判断循环条件是否为真。如果循环条件为真,则执行循环体语句,然后执行计数器更新,再次判断循环条件是否为真,如此循环下去,直到循环不再为真,循环结束。
和 while 循环一样,for 循环也仅对其后一条语句产生效果。如果要循环多条语句,则需要使用花括号将它们组合成一条复合语句。
如果变量 i 仅作为计数器使用,并且在循环结束后并不关心其值,则可以将变量 i 声明为计数器初始化时的局部变量,这样变量 i 只能在 for 循环中使用,而循环外无法使用变量 i。具体代码如下:
下面再举一个简单的例子,用 for 循环输出 0~100 的所有偶数:
你如果只是想要一个死循环,那么可以对 for 循环括号中的所有三个部分都不进行编写,或者编写一个始终为真的表达式。以下三个例子都是死循环,但是 while 循环不能省略循环条件:
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); 循环行为2while 和 for 只对它们后面的第一条语句产生影响,而分号将构成一个空语句。这时,虽然可以编译成功,但是每次循环仅执行空语句。