求解答:运行结果为什么不一样?

 #include <stdio.h> 
int main(void) {
    int i = 0;
    int j = 0;

    for (; i < 2; i++) 
        for ( ; j < 2; j++)
            printf("hello\n");
    return 0;
}

运行结果:
hello
hello

 #include <stdio.h> 
int main(void) {
    int i = 0;
    int j = 0;

    for (; i < 2; i++) {
        j = 0;
        for ( ; j < 2; j++)
            printf("hello\n");
    }
    return 0;
}

运行结果:
hello
hello
hello
hello

为什么运行结果不一样?

第二个代码,每次内循环前都会将j设置为0
第一个代码则不会,因此,只有第一次外循环,会执行内循环,第二次开始的外循环,j=2,内循环不执行

j的作用域 你是在for循环之前定义的 所以其在整个mian函数中都可以调用
第一个程序j在第一次循环从0变为2 输出俩个hello 第二次循环j 还是2 所以直接跳出循环
第二个程序 在第二次循环的时候 j又重新变为0 则继续循环下面的for 函数