黑马程序员技术交流社区
标题: 比较两者的不同 [打印本页]
作者: 黑马-zhangping 时间: 2012-10-20 08:54
标题: 比较两者的不同
这是一个简单的for循环的例子,这是我曾经遇到的一个问题,希望大家好好理解一下
1. (1)for(int i=0;i<10;i++)
for(int j=0;j<10;j++){
}
}
int i=0;
(2) int i=0;
for(int i=0;i<10;i++)
for(int j=0;j<10;j++){
}
}
比较两者之间的不同,为什么前者就可以通过,而后者就不可以,并说明原因?
作者: 打工人 时间: 2012-10-20 09:05
本帖最后由 冯海霞 于 2012-10-20 09:09 编辑
变量的作用范围
因为前者for循环中的变量i只在for循环内有效,会在循环执行完后自动释放。所以在循环外定义相同类型和名称的变量没有影响。
而后者就是定义了两个重名的变量,开始定义的i在for循环中可以使用,这样定义就是重复
作者: 刘伟平 时间: 2012-10-20 09:31
这也是程序由上到下的执行顺序决定的。
定义在for循环后,说明是循环执行完毕后局部变量i释放后,重新定义一个变量i;
而定义在for循环前定义的变量i则可以在循环中使用,所以不可以重名。
作者: 王中利 时间: 2012-10-20 09:31
这是一个简单的for循环的例子,这是我曾经遇到的一个问题,希望大家好好理解一下
1. (1)for(int i=0;i<10;i++)
for(int j=0;j<10;j++){
}
}
int i=0;
(2) int i=0;
for(int i=0;i<10;i++)//这里少了一个大括号
for(int j=0;j<10;j++){
}
}
比较两者之间的不同,为什么前者就可以通过,而后者就不可以,并说明原因?
作者: 杨政 时间: 2012-10-20 10:38
这是一个简单的for循环的例子,这是我曾经遇到的一个问题,希望大家好好理解一下
1. (1)for(int i=0;i<10;i++)
for(int j=0;j<10;j++){
}
}
int i=0;//前面的i是局部变量,在for循环结束后就已经释放,这里定义i没有问题.
(2) int i=0;//定义了成员变量i.
for(int i=0;/*前面成员变量i还存在,这里再定义局部变量i的话就不合适了*/i<10;i++)
for(int j=0;j<10;j++){
}
}
比较两者之间的不同,为什么前者就可以通过,而后者就不可以,并说明原因?
作者: 齐连涛 时间: 2012-10-20 12:49
(2)中成员变量和for循环中局部变量同名,不允许,因为i只有一个。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |