为什么下面的代码没有提供错误,因为我多次定义为int i = 10?此外,为什么我的迭代变量不受影响?为什么没有冲突?输出是1010101010.怎么样?变量的多重定义
#include<stdio.h>
int main()
{
int i;
for(i=0;i<5;i++)
{
int i=10;
printf("%d",i);
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++;
}
}
自动变量只有在范围{
,其中}
他们居住活着。
你在你的程序命名为i
两个变量:
i
在main
宣称拥有整个main
功能的范围。for
循环内的i
仅在循环内有作用域。注意,当您参考i
里面的for循环内i
影子在main
宣布的i
。
int i=10;
for loop
只在循环内部可用,它不知道它是否先前在循环外定义。
代码块中定义的变量范围仅限于该块。 即,
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
你的情况,你每次初始化内我到10和打印,那么你增加内我,所以每次打印值时间内我的,你声明并初始化到10
这是因为可变的变量
范围范围内处于向{}
你的第一个int我将通过main()而活着,而int里面的for只会在for循环中存在。
现在为什么输出是1010101010 ???
简单的解释是当你输入看你的新我会等于10,你打印它然后我++使它11.再次下一次我= 10你打印它,我++使它11这继续为主)INT I < 5这样的五倍,你会得到1010101010.
希望它可以帮助.....
怎么样的输出?为什么是1010101010? –
@PrithviRaj,你增加内部'i'然后它被破坏并重新创建下一次迭代。因此,印刷的“i”全部是五次。 – chris
@PrithviRaj:在for循环中,编译器只能看到循环内声明的'i'。 –