首页 > 代码库 > (初学者)关于用 if 对变量初始化的问题

(初学者)关于用 if 对变量初始化的问题

作为一个初学者,学习中会遇到很多问题。有些问题我们不知道为什么错了,因为在我们看来,是没有任何问题的,比如在学if判断的时候,遇到的一个问题

 

int a,b=5;
if(b>3)
a=1;
else if(b<=3)
a=0;
Console.WriteLine(a);

 

代码意思很简单,如果b大于3a=1。如果不小于等于3a=0。然后输出a

但是系统会在最后红色a处提示“使用了未赋值的局部变量a”。

而我们回过头来看看,发现不管b等于多少,我们都给a赋值了啊?为什么会报错a未赋值呢?

下面我说说我的理解看法,有不对的地方请指正。

技术分享


   在上面代码
中,a开始是没有值的,我们使用if判断来给a初始化,符合ifelse if其中一个条件时,a当然有值,但如果这两个条件都不符合的时候,判断结束,a仍没有值,这就是报错的原因。因为条件为真(ifelse if)时a有值(10),条件为假(else)时,没有执行任何程序,所以没有给a赋值。首先我们知道
if判断语句分为三部分if(如果条件1)、else if(如果条件2)、else(否则)三部分,其中if个数为1个,else if的个数为任意,else的个数为0个或1个。其中ifelse if表示符合条件后,条件为真,进行相应的动作,如果不符合条件,就是条件为假时,就执行else

   所以,在if判断中,条件成立(if、else if)加上条件都不成立(else),才是以个完整的整体。

     当然如果在声明时已经初始化了,两个条件都不符合,a还是原来初始化时的值,是有值的不会报错。

   当然有人问,if(b>3)else ifb<=3)已经把b所在的所有范围都包含了,但计算机只考虑条件内条件外,条件外没有相应代码,就不执行了。而且退一步说,如果b为虚数(比如)呢,就是else的范围了。

  所以用if判断来给变量初始化时,就不要省略else了。

 

(初学者)关于用 if 对变量初始化的问题