62,628
社区成员
发帖
与我相关
我的任务
分享int ei = 5;
for (int i = 0; i < 10; i++) {
int ei = 10;
}for (int i = 0; i < 10; i++) {
int ei = 10;
}
int ei = 5;
int ei = 5;//1
for (int i = 0; i < 10; i++) {
int ei = 10;//报错是因为1处的代码依然有效,
}
//上面的代码报错是因为已经有一个ei的变量了,
//---------------------------------------------------
for (int i = 0; i < 10; i++) {
int ei = 10;
}
int ei = 5;
下面那个不报错是因为ei只是影响for循环里面,所以在外面再次定义是没有问题的。
作用域问题而已。
{
int ei = 5;
}
for (int i = 0; i < 10; i++) {
int ei = 10;
}
这样子写也是对的。
这里大概需要理解两个重要的概念,代码块和作用域,还有程序编译是从上往下扫描的。
上面两个ei的作用域都在{}内部。所以互不干扰,正确。
for (int i = 0; i < 10; i++) {
int ei = 10;
}
int ei = 5;
// ------------------------------------
以下
这个例子正确是因为,第一个ei的作用域在{}里面。而第二个ei的作用域,是从它定义开始往下都能其作用。
所以也不会出现重定义。