在c中,当这个代码块运行时,它输出10 10 10 10 10.我认为循环应该在第一次执行后退出,因为我变为11但它没有发生.为什么会这样?
#include<stdio.h>
int main()
{
int i;
for(i=0;i<5;i++)
{
int i=10;
printf("%d\t",i);
i++;
}
return;
}
Run Code Online (Sandbox Code Playgroud)
但是当程序编写如下时,输出类似于我的想法(即10).上面代码和下面显示的代码之间的确切区别是什么?C如何处理这些变量?如果有人解释这个,我会很高兴.
#include<stdio.h>
int main()
{
int i;
for(i=0;i<5;i++)
{
i=10;
printf("%d\t",i);
i++;
}
return;
}
Run Code Online (Sandbox Code Playgroud)
在你的第一个程序中,for循环使用i声明的外部for来控制循环.该printf用途i的内声明的for循环输出值和这个i有块作用域.
ifor 的新声明loop暂时隐藏旧声明.现在的价值i是10.在的端for环块的新i不程序可见和可变恢复其旧的意义和此时i存储的值作为每循环的迭代(或者1,2,3或4).