| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 857 人关注过本帖
标题:未赋值的局部变量问题
只看楼主 加入收藏
LennyMogwai
Rank: 2
等 级:论坛游民
帖 子:20
专家分:15
注 册:2011-7-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
未赋值的局部变量问题
大家好,小弟想请教一个问题:
小弟刚接触C#,现辛苦做习题中,有一道题,输入两个整数,求最大公约数和最小公倍数,小弟代码如下:
static void Main(string[] args)
        {
            int axin1, axin2, t, i, j, k1, k2;
            Console.WriteLine("请输入第一个数,以回车键结束\n");
            axin1 = int.Parse(Console.ReadLine());
            Console.WriteLine("请输入第二个数,以回车键结束\n");
            axin2 = int.Parse(Console.ReadLine());
            if (axin1 > axin2)
            {
                t = axin1;
                axin1 = axin2;
                axin2 = t;
            }
            for (i = 1; i <= axin1; i++)
            {
                k1 = axin1 % i;
                k2 = axin2 % i;
                if ((k1 == 0) && (k2 == 0))
                {
                    j = i;
                }
                else
                {
                    continue;
                }
            }
            t = axin1 * axin2 / j;
            Console.Write("这两个数的最大公约数是{0}\n", j);
            Console.WriteLine("这两个数的最小公倍数是{0}\n", t);
            Console.ReadKey();
        }
以上程序在编译时,提示36行(红色的那行)使用了未赋值的局部变量j的错误,后来我在循环前面一行加了“j=0”之后,就可以顺利通过,但是搞不懂的是:
我定义了其他的变量也未赋初始值,为什么偏偏提示j这个变量呢?我自己分析了一下,是不是因为我程序中“t=axin1*axin2/j”这句的原因?因为j是除数,就是说j不能为空,也不能为0,所以必须赋初始值?
搜索更多相关主题的帖子: 最小公倍数 公约数 
2011-09-08 23:12
hhwz
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:87
帖 子:687
专家分:4502
注 册:2011-5-22
收藏
得分:20 
好吧 这个问题回答过很多次了
如果在FOR循环中,才给变量赋值 那么 这个值就是局部变量了 只有在FOR循环里面才有作用
 出了FOR循环 局部变量 就无效了
2011-09-09 04:18
LennyMogwai
Rank: 2
等 级:论坛游民
帖 子:20
专家分:15
注 册:2011-7-24
收藏
得分:0 
明白了,多谢2楼……

其实我开始定义的其他变量并不是定义,只是声明对吧,要赋初始值才算作定义的……
2011-09-09 07:04
快速回复:未赋值的局部变量问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043741 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved