c语言变量作用域问题


#include <stdio.h>
int main(void)
{
    int i = 0;
    int c = 0;
    int j, m;
    for (i; i < 3; i++) {
        for (c; c < 4; c++) {
            printf("i = %d; ", i);
        }
        printf("\n");
        // printf("i = %d; ", i);
    }
    printf("------------------------------------------------------------------------\n");
    for (j = 0; j < 3; j++) {
        for (m = 0; m < 4; m++) {
            printf("j = %d; ", j);
        }
        printf("\n");
        // printf("i = %d; ", i);
    }
    return 0;
}

img


为什么i在内层循环只能输入0,而不是0,1,2?
而j就会输出0,1,2?在for循环内初始化和循环外初始化有什么不同?求解答感谢,刚接触c。

      for (c; c < 4; c++)
        {
            printf("i = %d; ", i);
        }

这个循环结束后c的值为4
当第二次进入时,c 不满足 < 4的条件
所以内层循环只进入了一次
再就无法进入了