C - for 循环代码之间的差异

标签 c for-loop

有人可以解释一下这两个for循环代码之间的区别吗?

代码1:

int j = 0;
int i;
int n = 8;
for (i = 0; i < n; i++){
        printf("Value if I: %d\n",i);
    while (j < n){
        printf("Value of J: %d\n",j);
        j++;
        }
}

}

输出:

i = 0 , j = 0,1,2,3,4,5,6,7
i = 1
i = 2
i = 3
i = 4
i = 5
i = 6
i = 7

代码2:

int i;
int n = 8;
for (i = 0; i < n; i++){
        printf("Value if I: %d\n",i);
        int j = 0;
    while (j < n){
        printf("Value of J: %d\n",j);
        j++;
        }
}

}

输出:

    i = 0 , j = 0,1,2,3,4,5,6,7
    i = 1 , j = 0,1,2,3,4,5,6,7
    i = 2 , j = 0,1,2,3,4,5,6,7
    i = 3 , j = 0,1,2,3,4,5,6,7
    i = 4 , j = 0,1,2,3,4,5,6,7
    i = 5 , j = 0,1,2,3,4,5,6,7
    i = 6 , j = 0,1,2,3,4,5,6,7
    i = 7 , j = 0,1,2,3,4,5,6,7

为什么上述两个for循环代码之间存在差异?

最佳答案

在第二个代码中,您每次在 while 循环之前都会重置 j,因此您可以获得 i 的每个循环的 j 的所有值。 在第一种情况下,一旦达到 j=8,就不再重置该值,因此每次检查 while 条件时,它都会返回 FALSE,并且不再打印它。

关于C - for 循环代码之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34083347/

相关文章:

c - 以网格形式绘制点

javascript - For 循环出现不足

c - 在 core_cm4.h 上,为什么会有类似 ((uint32_t)(int32_t)IRQn) 的转换?

c++ - Libquantum 代码理解 Makefile

java - 扫描仪无法正常工作

c# - 如何在 C# 中使用 3 个数组分配变量

batch-file - Windows CMD 批处理 : FOR/R with DelayedExpansion

c++ - 如何在 Windows 和 Linux 上使用 C、C++ 从 tcp/ip 端口发送数据和获取数据

c++ - 为什么 CPU 时间为负

c - 我为类制作的 e^x 函数得到了错误的输出,并且得到了错误的项数