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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈培茹 中级黑马   /  2013-4-14 20:15  /  2730 人查看  /  24 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

明明定义把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();

复制代码

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.            }

回复 使用道具 举报
你写的I为局部变量,应该将I定义为全局变量!

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
楼上说的很对。
程序中的变量作用范围一般是他所在的大括号内,如果想在整个程序中使用,就要定义为全局变量
回复 使用道具 举报
你for里面的int i 是属于局部变量,这个i 只能被for 代码块中被访问,一旦for 循环结束。int i 就会被当作垃圾被回收,所以你下面打印i的时候说i未定义。。
局部变量只能在局部被访问
回复 使用道具 举报
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();
你可以在看看局部代码块的使用...

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
你写的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();
回复 使用道具 举报
  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外面就行。
回复 使用道具 举报
i是局部变量,生命周期只有在for循环内,要想在for循环外调用,就要在for循环外定义

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
变量作用域范围在离声明此变量最近的一对大括号内。
回复 使用道具 举报
U芽Lady 发表于 2013-4-14 20:24
因为i的生命周期只在for哪个括号之间,随着for循环的结束,i释放内存,也就是i不存在了
可以这样写
01.int sum ...

哦哦,明白了。谢谢
回复 使用道具 举报
小人物 发表于 2013-4-14 20:31
你写的I为局部变量,应该将I定义为全局变量!

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

谢谢啦!!!:P
回复 使用道具 举报
刘胜寒 发表于 2013-4-14 20:46
你for里面的int i 是属于局部变量,这个i 只能被for 代码块中被访问,一旦for 循环结束。int i 就会被当作 ...

谢谢啦!!!嘿嘿,明白了:P
回复 使用道具 举报
smile_joe 发表于 2013-4-14 21:02
int sum=0;

            for (int i = 0; i = 20)

恩恩,一直不明白局部变量和全局变量:(
回复 使用道具 举报
↖落葉下♀媃媚 发表于 2013-4-14 21:08
你写的I为局部变量,应该将I定义为全局变量!
int sum=0;
int  i=0;

嘿嘿,谢谢啦:loveliness:
回复 使用道具 举报
↖落葉下♀媃媚 发表于 2013-4-14 21:08
你写的I为局部变量,应该将I定义为全局变量!
int sum=0;
int  i=0;

嘿嘿,谢谢啦:loveliness:
回复 使用道具 举报
陈志盟 发表于 2013-4-14 21:11
你定义的i为局部变量,出了for循环就i就没有用了。把i定义 在for外面就行。

谢谢啦,已经明白了:loveliness:
回复 使用道具 举报
zerochen46 发表于 2013-4-14 21:14
i是局部变量,生命周期只有在for循环内,要想在for循环外调用,就要在for循环外定义 ...

恩恩,谢谢啦:victory:
回复 使用道具 举报
黑马田杰 发表于 2013-4-14 21:20
变量作用域范围在离声明此变量最近的一对大括号内。

恩恩,谢谢啦:P
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马