为什么这里一定要设置全局变量

来源:百度知道 编辑:UC知道 时间:2024/05/06 11:02:10
下面是程序
其中有个变量y
如果不开始设置成全局变量,
y = y + k;
这里就会提示报错说使用了未赋值的局部变量!
前提是我再设置其他(int i, z, k,y;)已经设置后不能使用

//题目:输入某年某月某日,判断这一天是这一年的第几天?
//程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天。
using System;
using System.Collections.Generic;
using System.Text;

namespace 判断天数
{
class Program
{
static int y;
static void Main(string[] args)
{
string i0, z0, k0;
int i, z, k;
Console.WriteLine("欢迎进入判断天数程序:\n下面请跟随程序依次输入年月日");

do
{
Console.WriteLine("请输入年(如1999)");
i0 = Console.ReadLine();
Console.WriteLine("请输入月");
z0 = Console.ReadLine();
Console.WriteLine("请输入日");
k0 = Console.ReadLine();

1.全局变量在程序开始执行时就分配了并且始终占据某存储单元,直到程序结束才释放,没有定义初值,系统会自动给补上初值。

2. 而局部变量在栈中。C#严格禁止使用未赋值的变量。你只在栈里通过申明划分了大小,但是这个变量并不会由系统自动初始化,分配默认值。

所以区别就显现在这里。

总结:
局部变量最好在申明时就初始化给个值,
后面的使用原则:必须先赋值,再使用。

最后,
你这个程序没有限制严密,比如天数99天,还应该再写代码考虑周全点。