for循环内外变量的多个声明相同
Multiple declarations same of variables inside and outside for loop
#include <stdio.h>
int main()
{
int i;
for ( i=0; i<5; i++ )
{
int i = 10;
printf ( "%d", i );
i++;
}
return 0;
}
在此变量中,i
在 for
循环外声明,并在 for
循环内再次声明和初始化。 C如何允许多重声明?
循环外的i
和循环内的i
是两个不同的变量.
外部 i
将在 main
的整个持续时间内存活。
内部i
只会在一个循环迭代的持续时间内存在。
内层shadows外层在此范围内:
{
int i = 10;
printf ( "%d", i );
i++;
}
由于阴影规则,在上述范围内无法引用外部。
注意不能在同一个范围内声明两个同名的变量:
{
int i = 0;
int i = 1; // compile-time error
}
一个作用域中的变量可以屏蔽更高作用域中的变量。
在此示例中,循环内部定义的 i
掩盖了外部定义的 i
。在循环体内,printf
打印内部 i
的值,即 10。然后 i++
再次对内部 i
进行操作,将其设置为 11。
当循环触底并返回时,内部 i
超出范围。 for
的第二个和第三个子句然后作用于外部 i
。再次进入循环体时,定义了一个新的内层i
实例,并初始化为10.
您应该查看下一页以了解 C 语言中变量可以具有的不同类型作用域的定义。
http://aelinik.free.fr/c/ch14.htm
您的第一个 int i
在整个块的范围内,而您的第二个 int i
仅在该嵌套循环内具有范围。一旦在嵌套循环之外,i
的原始块作用域版本再次适用。
#include <stdio.h>
int main()
{
int i;
for ( i=0; i<5; i++ )
{
int i = 10;
printf ( "%d", i );
i++;
}
return 0;
}
在此变量中,i
在 for
循环外声明,并在 for
循环内再次声明和初始化。 C如何允许多重声明?
循环外的i
和循环内的i
是两个不同的变量.
外部
i
将在main
的整个持续时间内存活。内部
i
只会在一个循环迭代的持续时间内存在。
内层shadows外层在此范围内:
{
int i = 10;
printf ( "%d", i );
i++;
}
由于阴影规则,在上述范围内无法引用外部。
注意不能在同一个范围内声明两个同名的变量:
{
int i = 0;
int i = 1; // compile-time error
}
一个作用域中的变量可以屏蔽更高作用域中的变量。
在此示例中,循环内部定义的 i
掩盖了外部定义的 i
。在循环体内,printf
打印内部 i
的值,即 10。然后 i++
再次对内部 i
进行操作,将其设置为 11。
当循环触底并返回时,内部 i
超出范围。 for
的第二个和第三个子句然后作用于外部 i
。再次进入循环体时,定义了一个新的内层i
实例,并初始化为10.
您应该查看下一页以了解 C 语言中变量可以具有的不同类型作用域的定义。
http://aelinik.free.fr/c/ch14.htm
您的第一个 int i
在整个块的范围内,而您的第二个 int i
仅在该嵌套循环内具有范围。一旦在嵌套循环之外,i
的原始块作用域版本再次适用。