为什么此C程序不考虑for循环而输出“ 10”?

tir*_*mya 0 c for-loop

#include <stdio.h>
int main()
{
  int i=10;
  for (int i=1;i<=20;i++)
    i++;
    printf("%d",i); 
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我不明白,为什么此C程序总是只将输出打印为10,而不管在for循环中给出的条件如何。我试图通过在for循环中进行一些更改来执行它for (int i=1;i<=50;i++),但是它返回了相同的输出!这是什么错误?

The*_*uin 5

这是一个for循环,所以它根据您在其标题写的是什么递增:i++在这里。您无需再i在循环主体中手动增加i++一次。

除此之外,如果您i在循环之前声明一个变量,然后执行write for (int i=1;i<=20;i++),则它仅在循环范围内声明另一个变量。由于您没有在循环代码周围放置任何括号,因此循环代码仅由line组成i++。然后,for作用域结束,并打印i您先前声明并初始化为10 的“其他” 变量。

  • 两个变量都称为“ i”的存在是诊断的关键部分。 (4认同)

abe*_*nky 5

这就是您的代码实际所说的,并带有一些注释来说明

#include <stdio.h>
int main()
{
    int i=10;               // Variable i is declared (=10)
    for (int i=1;i<=20;i++) // DIFFERENT variable i is declared, hiding the first variable (=1).
    {
        i++;                // The inner-i variable increments: 3, 5, 7, .... 19
    }                       // inner-i is complete, and disappears.  It is no longer active.

    printf("%d",i);         // The original Variable i is printed.
                            // It still has value 10, as originally initialized.
    return 0;
}
Run Code Online (Sandbox Code Playgroud)