当变量被声明两次并且在for循环中声明变量时,变量范围是什么。
答案 0 :(得分:1)
这是因为声明的变量的范围仅在您声明她的代码块内。在街区之外没有看到它。
我现在已经看到了你的代码。在1.代码中,你宣布两个具有相同名称的int是不允许的,并且在2.代码中你声明了两个具有不同名称的int,所以它&#39很好。
答案 1 :(得分:0)
为了理解您的问题,也称为变量的范围,让我们看看以下示例程序:
#include <stdio.h>
int main(int argc, char *argv[])
{
int I = -1;
for (int I = 0; I < 3; I++) {
printf("%d\n", I);
}
printf("%d\n", I);
{
int I = 200;
printf("%d\n", I);
}
return 0;
}
如你所见,我将变量I声明了三次。
当声明为循环时,结果将是打印以下值:
0
1
2
在for循环之后,当我再次打印I变量时,我引用在for循环外声明的变量,我声明的第一个变量,结果将是:
-1
现在,如果我用花括号打开一个新的范围,我声明一个名称相同但值不同的新变量,我会得到:
200
我希望我对变量范围的描述现在很清楚
答案 2 :(得分:0)
第一个main
尝试使用相同的标识符定义两个变量。这显然是被禁止的,并导致编译错误。
第二个main
包含for
- 循环。 for
- 循环引入了新的范围,如果没有添加花括号,则只包含下一个语句或定义(即int i;
)。
每次迭代都会为i
分配解除分配,因此它一次只存在一次。所有定义的i
都在不同的范围中。因此没有命名冲突。
如果外部范围中的变量(即main
的函数范围)和内部范围中的变量(即{{ {1}} - loop),来自内部范围的变量隐藏来自外部范围的变量,从而使外部范围变量无法访问。
C11标准说,§6.2.1.4:
在内部范围内,标识符指定声明的实体 在内部范围;在外部范围内声明的实体是隐藏的 (并且不可见)在内部范围内。