for 循环

for 语句是对 while 语句的推广,在实际编程过程中,可以选择 while 与 for 中的任意一种循环语句,主要看使用哪一种更清晰。for 语句比较适合初始化和增加步长都是单条语句并且逻辑相关的情形,因为它将循环语句集中放在一起,且比 while 语句更紧凑。

语法

for (A; B; C)
    D;         // single statement

E;             // expression
// 每一部分可以是任意表达式或者为 **空**
for (A; B; C)
{
    D;         // single or multiple statement(s)
}

E;
  • A 是初始化部分(初始化声明在 C99 才支持),仅在进入循环前执行一次
  • B 是条件部分,循环控制将对该条件求值
    • 如果结果为 true,则执行循环体;执行完循环体后将继续执行 C
    • 如果结果为 false,则终止执行循环
  • C 是步长部分(可以为空但需要添加到循环体中,否则会进入死循环),用于增加(increment)或减少(decrement)控制变量;执行完该部分后将继续执行 B
  • D 是循环体部分
  • A、B、C 和 D 均可以为空

流程图


                            +---------------------------+
                            v                           |
+---------+     +---+     +-------+  true   +---+     +---+
| (start) | --> | A | --> |   B   | ------> | D | --> | C |
+---------+     +---+     +-------+         +---+     +---+
                            |
                            | false
                            v
                          +-------+         +-------+
                          |   E   | ------> | (end) |
                          +-------+         +-------+

for 与 while

for 和 while 总是可以通过相互转换得到,例如 while (1) {} 可以转换为 for (;;) {}

示例

#include <stdio.h>

// 求 1 ~ 100 之间奇数的和
int main()
{
    int i;
    int sum;

    sum = 0;

    for (i = 0; i <= 100; i++)
    {
        // 使用 “按位与” 运算判断数字是否为奇数
        if (i & 1 == 1)
            sum += i;
    }

    printf("%d\n", sum);

    return 0;
}

results matching ""

    No results matching ""