A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© mdb 中级黑马   /  2014-3-30 18:46  /  1058 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 mdb 于 2014-3-30 22:08 编辑
  1.             for (int i = 0; i < 9; i++)
  2.             {
  3.             }
  4.             int i = 9;
复制代码

for循环外面的另一个i变量编译不通过,为什么呢,for里的i的范围不是在for循环里面吗,为什么范围外面不能重新声明呢?

5 个回复

倒序浏览
变量作用的范围是从声明它的从开始到结束的大括号之间。for循环外面的声明的i变量的作用域包括for循环,而你在for循环内再声明,就重复声明了。
回复 使用道具 举报
请仔细观察变异不通过的理由,是你所声明的变量在“子级中已经表示其他内容”。
在类里面声明变量是不分先后的,
也就是说声明在for循环前面和后面都会在整个类内起作用,
而在类里面声明的for相当于这个类的一个子级。这样,父级和子级都有int i的变量。
这也是编译不通过的原意。
回复 使用道具 举报
变量不可以重新声明。。。
回复 使用道具 举报
百川 发表于 2014-3-30 20:41
请仔细观察变异不通过的理由,是你所声明的变量在“子级中已经表示其他内容”。
在类里面声明变量是不分先 ...

是的,忘了这一点...
回复 使用道具 举报
如果你想打印for循环里面的i的值,在外部可以直接打印,但是你重新定义一个i,这时如果打印的话,编译器知道你指定的是哪一个i吗?变量名称需要注意,尽量不要用同名的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马