变量的多个定义

时间:2012-12-12 05:55:00

标签: c

为什么下面的代码没有出错,因为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++;
    }
}

4 个答案:

答案 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。

希望它有所帮助......