for循环中的变量在同一循环(C语言)中具有不同的值

在这些循环中,我有两个不同的值,我不知道为什么会这样,因为我没有增加它的大小。我在两个循环中都打印i,但是在内部循环中打印时它具有更大的值,而在外部循环中应该具有更大的值。

编辑:删除了描述,我只用相关信息重写了它。

你能告诉我为什么会这样吗?

int position = 0;
int size = 4;

for (int i = 0; i < size; i++)
{
    for (int j = 0; j < position; j++)
    {
        printf("    i = %d\n",i);
    }

    position++;

    printf("i = %d\n",i);
}

printf("\n");

它是打印出来的:

i = 0
    i = 1
i = 1
    i = 2
    i = 2
i = 2
    i = 3
    i = 3
    i = 3
i = 3

所需的输出应为:

i = 0
i = 1
    i = 1
i = 2
    i = 2
    i = 2
i = 3
    i = 3
    i = 3
    i = 3
qazaqq11 回答:for循环中的变量在同一循环(C语言)中具有不同的值

这是因为您已经用position创建了一个奇数变量循环条件。 i for循环的第一圈,它跳过内部循环,然后将位置增加1并输出i =0。然后i为1的下一圈,它执行内部循环,依此类推。

这就是为什么在for循环中使用不断变化的条件是个坏主意的原因-它使代码更难以理解。

,

要使一个循环中的代码至少执行一次,可以使用do-while循环。我继续为您更改了它。此外,在循环之前打印不缩进的i可以使您获得所需的输出。

int position = 0;
int size = 4;

for (int i = 0; i < size; i++)
{
    printf("i = %d\n",i);

    int j = 0;
    do {
        printf("    i = %d\n",i);
        j++;
    } while (j < position);

    position++;
}

printf("\n");

编辑:啊,我知道了,您又更改了所需的输出!这使得不再需要至少执行代码的条件。常规的while循环可以达到目的:

int position = 0;
int size = 4;

for (int i = 0; i < size; i++)
{
    printf("i = %d\n",i);

    int j = 0;
    while (j < position) {
        printf("    i = %d\n",i);
        j++;
    }

    position++;
}

printf("\n");
,

只需将变量i的输出放在内部循环之前。

#include <stdio.h>

int main(void) 
{
    int position = 0;
    int size = 4;

    for (int i = 0; i < size; i++)
    {
        printf("i = %d\n",i);

        for (int j = 0; j < position; j++)
        {
            printf("    i = %d\n",i);
        }

        position++;
    }

    printf("\n");

    return 0;
}

程序输出为

i = 0
i = 1
    i = 1
i = 2
    i = 2
    i = 2
i = 3
    i = 3
    i = 3
    i = 3
本文链接:https://www.f2er.com/3137606.html

大家都在问