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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马-zhangping 中级黑马   /  2012-10-20 08:54  /  1587 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这是一个简单的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++){
              }
       }
比较两者之间的不同,为什么前者就可以通过,而后者就不可以,并说明原因?

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
本帖最后由 冯海霞 于 2012-10-20 09:09 编辑


变量的作用范围
因为前者for循环中的变量i只在for循环内有效,会在循环执行完后自动释放。所以在循环外定义相同类型和名称的变量没有影响。
而后者就是定义了两个重名的变量,开始定义的i在for循环中可以使用,这样定义就是重复

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
这也是程序由上到下的执行顺序决定的。
定义在for循环后,说明是循环执行完毕后局部变量i释放后,重新定义一个变量i;
而定义在for循环前定义的变量i则可以在循环中使用,所以不可以重名。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报




这是一个简单的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++){

              }

       }

比较两者之间的不同,为什么前者就可以通过,而后者就不可以,并说明原因?

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
这是一个简单的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++){

              }

       }

比较两者之间的不同,为什么前者就可以通过,而后者就不可以,并说明原因?

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
(2)中成员变量和for循环中局部变量同名,不允许,因为i只有一个。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马