黑马程序员技术交流社区

标题: for循环中的小错误 [打印本页]

作者: 陈培茹    时间: 2013-4-14 20:15
标题: for循环中的小错误
明明定义把i定义为int了,怎么说没有定义那???:(
  1. int sum=0;
  2.             for (int i = 0; i <= 100; i++)
  3.             {
  4.                 sum=sum+i;
  5.                 if (sum >= 20)
  6.                 {
  7.                     break;
  8.                 }
  9.             }
  10.             Console.WriteLine(i);
  11.             Console.ReadKey();

复制代码

作者: U芽Lady    时间: 2013-4-14 20:24
因为i的生命周期只在for哪个括号之间,随着for循环的结束,i释放内存,也就是i不存在了
可以这样写
01.int sum=0;
int i = 0;
02.            for (; i <= 100; i++)

03.            {

04.                sum=sum+i;

05.                if (sum >= 20)

06.                {

07.                    break;

08.                }

09.            }


作者: 小人物    时间: 2013-4-14 20:31
你写的I为局部变量,应该将I定义为全局变量!
作者: 王怀亮    时间: 2013-4-14 20:32
楼上说的很对。
程序中的变量作用范围一般是他所在的大括号内,如果想在整个程序中使用,就要定义为全局变量
作者: 刘胜寒    时间: 2013-4-14 20:46
你for里面的int i 是属于局部变量,这个i 只能被for 代码块中被访问,一旦for 循环结束。int i 就会被当作垃圾被回收,所以你下面打印i的时候说i未定义。。
局部变量只能在局部被访问
作者: smile_joe    时间: 2013-4-14 21:02
int sum=0;

            for (int i = 0; i <= 100; i++)

            {

                sum=sum+i;

                if (sum >= 20)

                {

                    break;

                }

            }//所定义的i在这个大括号后,生命周期已完结

            Console.WriteLine(i);//把输出放进去或重新在外面定义一个i,在定义sum的跟前就ok

            Console.ReadKey();
你可以在看看局部代码块的使用...
作者: ↖落葉下♀媃媚    时间: 2013-4-14 21:08
你写的I为局部变量,应该将I定义为全局变量!
int sum=0;
int  i=0;
           for ( i = 0; i <= 100; i++)

            {

                sum=sum+i;

               if (sum >= 20)

                {

                    break;

                }

            }

            Console.WriteLine(i);

            Console.ReadKey();

作者: 陈志盟    时间: 2013-4-14 21:11
  1.            int sum=0;
  2.            int i;
  3.             for (i = 0; i <= 100; i++)
  4.             {
  5.                 sum=sum+i;
  6.                 if (sum >= 20)
  7.                 {
  8.                     break;
  9.                 }
  10.             }
  11.             Console.WriteLine(i);
  12.             Console.ReadKey();
复制代码
你定义的i为局部变量,出了for循环就i就没有用了。把i定义 在for外面就行。
作者: zerochen46    时间: 2013-4-14 21:14
i是局部变量,生命周期只有在for循环内,要想在for循环外调用,就要在for循环外定义
作者: 黑马田杰    时间: 2013-4-14 21:20
变量作用域范围在离声明此变量最近的一对大括号内。
作者: 陈培茹    时间: 2013-4-14 21:33
U芽Lady 发表于 2013-4-14 20:24
因为i的生命周期只在for哪个括号之间,随着for循环的结束,i释放内存,也就是i不存在了
可以这样写
01.int sum ...

哦哦,明白了。谢谢
作者: 陈培茹    时间: 2013-4-14 21:33
小人物 发表于 2013-4-14 20:31
你写的I为局部变量,应该将I定义为全局变量!

恩恩,谢谢啦:P
作者: 陈培茹    时间: 2013-4-14 21:34
王怀亮 发表于 2013-4-14 20:32
楼上说的很对。
程序中的变量作用范围一般是他所在的大括号内,如果想在整个程序中使用,就要定义为全局变 ...

谢谢啦!!!:P
作者: 陈培茹    时间: 2013-4-14 21:34
刘胜寒 发表于 2013-4-14 20:46
你for里面的int i 是属于局部变量,这个i 只能被for 代码块中被访问,一旦for 循环结束。int i 就会被当作 ...

谢谢啦!!!嘿嘿,明白了:P
作者: 陈培茹    时间: 2013-4-14 21:35
smile_joe 发表于 2013-4-14 21:02
int sum=0;

            for (int i = 0; i = 20)

恩恩,一直不明白局部变量和全局变量:(
作者: 陈培茹    时间: 2013-4-14 21:36
↖落葉下♀媃媚 发表于 2013-4-14 21:08
你写的I为局部变量,应该将I定义为全局变量!
int sum=0;
int  i=0;

嘿嘿,谢谢啦:loveliness:
作者: 陈培茹    时间: 2013-4-14 21:36
↖落葉下♀媃媚 发表于 2013-4-14 21:08
你写的I为局部变量,应该将I定义为全局变量!
int sum=0;
int  i=0;

嘿嘿,谢谢啦:loveliness:
作者: 陈培茹    时间: 2013-4-14 21:36
陈志盟 发表于 2013-4-14 21:11
你定义的i为局部变量,出了for循环就i就没有用了。把i定义 在for外面就行。

谢谢啦,已经明白了:loveliness:
作者: 陈培茹    时间: 2013-4-14 21:37
zerochen46 发表于 2013-4-14 21:14
i是局部变量,生命周期只有在for循环内,要想在for循环外调用,就要在for循环外定义 ...

恩恩,谢谢啦:victory:
作者: 陈培茹    时间: 2013-4-14 21:37
黑马田杰 发表于 2013-4-14 21:20
变量作用域范围在离声明此变量最近的一对大括号内。

恩恩,谢谢啦:P
作者: 王怀亮    时间: 2013-4-15 09:03
陈培茹 发表于 2013-4-14 21:34
谢谢啦!!!

不必客气,共同学习
作者: ↖落葉下♀媃媚    时间: 2013-4-15 09:29
陈培茹 发表于 2013-4-14 21:36
嘿嘿,谢谢啦

不客气,我也刚学,以后多多交流
作者: 陈培茹    时间: 2013-4-15 10:22
↖落葉下♀媃媚 发表于 2013-4-15 09:29
不客气,我也刚学,以后多多交流

恩恩,很乐意!:loveliness:
作者: 陈培茹    时间: 2013-4-15 10:22
王怀亮 发表于 2013-4-15 09:03
不必客气,共同学习

恩恩。加油加油{:2_32:}
作者: 田瑞朋    时间: 2013-4-15 21:56
int n;
for(int i=0;i<n;i++)
{
     
}
因为i是局部变量,它的作用域受限于方法体内,也就是说必须{}之间。外部无法访问除非和n一样定义在方法体外




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2