为什么下面的代码没有出错,因为i被多次定义为int i = 10?此外,为什么迭代变量不受影响?为什么没有冲突?输出是1010101010.怎么样?
#include<stdio.h>
int main()
{
int i;
for(i=0;i<5;i++)
{
int i=10;
printf("%d",i);
i++;
}
}
答案 0 :(得分:0)
自动变量仅在它们所在的范围{
,}
中有效
您的程序中有两个名为i
的变量:
i
中声明的main
具有整个main
功能的范围。 i
循环中的for
仅在循环内具有范围。 请注意,当您在for循环中引用i
内部i
阴影 i
中声明的main
时。
答案 1 :(得分:0)
int i=10;
中的 for loop
仅在循环内可用,它不知道它是否先前在循环外定义。
答案 2 :(得分:0)
代码块中定义的变量范围仅限于该块。 即,
int i=1;//outer i
{
int i=2;//inner i
printf("%d"&i);// this ll print 2
}
printf("%d"&i);// this ll print 1
同样也是。,即
int i=1;
for (int i=0;i<4;i++){
printf("%d",&i); // print 0 1 2 3
}
printf("%d",&i); // print 1
在你的情况下,每次你将内部i初始化为10并打印它然后你增加内部i,所以它每次打印你声明的内部i的值并初始化为10
答案 3 :(得分:0)
这是因为变量的范围
变量范围位于{to}
之内你的第一个int我将通过main()活着,而int in inside for将仅在for循环中存活。
现在为什么输出是1010101010 ???
简单的解释是,当你输入看看你的新i将等于10,你打印它然后i ++使它11.再次下次i = 10你打印它而i ++使它11继续为main() int i&lt; 5这样五次你会得到1010101010。
希望它有所帮助......