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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王连 中级黑马   /  2012-4-12 11:38  /  5311 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我知道在for语句中可以定义并赋值一个变量i,i的生命周期仅存在于这个for循环中,当循环结束了它的生命也就终止了,那么我想请问的是为什么在i的生命周期结束后,在for语句后面再定义一个变量i就会报错,而在另一个for语句中却可以再次定义变量i????新手求解  举例如下:
for(int i=0;i<5;i++)
{
}
int i;//报错
for(int i=0;i<5;i++)
{
}
for(int i=0;i<5;i++)
{
}
//正确

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

8 个回复

倒序浏览
循环外面定义的 i 是全局变量。在for循环里面是可以访问到外面定义的 i 。所以会报错
而另一个循环里面的 i 仅限于那个循环内的,所以别的for循环里面访问不到。因此不会报错

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
宋天琪 + 1
王连 + 1

查看全部评分

回复 使用道具 举报
            for(int i=0;i<5;i++)
            {
            }
            int i;//报错,他的作用域包括上面的for循环,所以会有冲突,而下面的for循环的作用域跟上面的都是在一个循环体内,所以不会报错
            for (int i = 0; i < 5; i++)
            {
            }

评分

参与人数 3技术分 +1 黑马币 +3 收起 理由
宋天琪 + 1
王连 + 2 很给力!
郑森 + 1 赞一个!

查看全部评分

回复 使用道具 举报
不能在此范围内声明名为“i”的局部变量,因为这样会使“i”具有不同的含义,而它已在“子级”范围中表示其他内容了

这是 VS中 报错的 内容·····

将 i 赋 初值 好像 也不可以····

把 i 写在顶上  就会 这样 报错

不能在此范围内声明名为“i”的局部变量,因为这样会使“i”具有不同的含义,而它已在“父级或当前”范围中表示其他内容了

把 i 改 成 其它 字符 就 ok···

看来 同名 是有 冲突的···因为这样会使“i”具有不同的含义····

这个 没 考虑 过 以前··

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
柏云杉 发表于 2012-4-12 12:13
循环外面定义的 i 是全局变量。在for循环里面是可以访问到外面定义的 i 。所以会报错
而另一个循环里面的 i ...

恩,懂了····


原来 如此···

呵呵···
回复 使用道具 举报
全局变量与局部变量的区别,
for(int i=0;i<5;i++)
{
}
int i;//报错
你这个报错的循环外已经定义了一个全局变量,所以在局部再定义一次就会报错
int i;
for( i=0;i<5;i++)
{
}
这样就不会报错了,因为i现在是全局变量你在局部也可以用,但不能重复定义了,

for(int i=0;i<5;i++)
{
}
for(int i=0;i<5;i++)
{
}
这两个循环中的 i 都属于局部变量,互不干扰,只作用在本循环中,

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
宋天琪 + 1
王连 + 1 赞一个!

查看全部评分

回复 使用道具 举报
王连 中级黑马 2012-4-12 20:36:42
7#
胡振超 发表于 2012-4-12 12:15
for(int i=0;i

非常感谢您的解答,通过您和大家的解答,让我更深刻的理解了for循环语句以及全局变量和局部变量的关系,让我这个新手学到了很多,谢谢!
回复 使用道具 举报
还是全局变量与局部变量的冲突

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
刘真 中级黑马 2012-4-12 22:25:29
9#
一般来说,变量不能重复定义。
首先弄明白全局变量的作用域范围和局部变量的作用域范围
当全局变量i和for循环的的局部变量i 就发生了冲突,重复定义了。
但是两个for循环里面的i都是局部变量,它的作用域只限于该for循环内。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

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