#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++),但是它返回了相同的输出!这是什么错误?
这是一个for循环,所以它根据您在其标题写的是什么递增:i++在这里。您无需再i在循环主体中手动增加i++一次。
除此之外,如果您i在循环之前声明一个变量,然后执行write for (int i=1;i<=20;i++),则它仅在循环范围内声明另一个变量。由于您没有在循环代码周围放置任何括号,因此循环代码仅由line组成i++。然后,for作用域结束,并打印i您先前声明并初始化为10 的“其他” 变量。
这就是您的代码实际所说的,并带有一些注释来说明
#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)