C,for循环:索引值从0到最终条件数的无法解释的变化

-1 c for-loop

在下面的代码中,"index"的值从0跳到10 ......我不知道这是怎么回事......

int main()
{

    int length = 10;
    int index = 0;
    printf("index is %d\n", index);
    for (index = 0; index < length; index++);
    {
        printf("index is %d\n", index);
    }

    printf("answer\n");


   return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

这是输出:

index is 0
index is 11
answer
Run Code Online (Sandbox Code Playgroud)

Jab*_*cky 7

你的代码实际上等同于:

int main()
{    
    int length = 10;
    int index = 0;
    printf("index is %d\n", index);

    for (index = 0; index < length; index++)
    {
      // empty loop
    }

    {
        printf("index is %d\n", index);
    }

    printf("answer\n");    

   return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

你需要删除;这里:

for (index = 0; index < length; index++);
                                        ^ remove this semicolon
Run Code Online (Sandbox Code Playgroud)

  • 这似乎解释了在没有印刷的情况下达到10(顺便提一下).但它能解释11吗? (2认同)