首页 > 代码库 > (初学者)关于用 if 对变量初始化的问题
(初学者)关于用 if 对变量初始化的问题
作为一个初学者,学习中会遇到很多问题。有些问题我们不知道为什么错了,因为在我们看来,是没有任何问题的,比如在学if判断的时候,遇到的一个问题:
int a,b=5;
if(b>3)
a=1;
else if(b<=3)
a=0;
Console.WriteLine(a);
代码意思很简单,如果b大于3,a=1。如果不小于等于3,a=0。然后输出a。
但是系统会在最后红色a处提示“使用了未赋值的局部变量a”。
而我们回过头来看看,发现不管b等于多少,我们都给a赋值了啊?为什么会报错a未赋值呢?
下面我说说我的理解看法,有不对的地方请指正。
在上面代码中,a开始是没有值的,我们使用if判断来给a初始化,符合if和else if其中一个条件时,a当然有值,但如果这两个条件都不符合的时候,判断结束,a仍没有值,这就是报错的原因。因为条件为真(if和else if)时a有值(1或0),条件为假(else)时,没有执行任何程序,所以没有给a赋值。首先我们知道if判断语句分为三部分if(如果条件1)、else if(如果条件2)、else(否则)三部分,其中if个数为1个,else if的个数为任意,else的个数为0个或1个。其中if和else if表示符合条件后,条件为真,进行相应的动作,如果不符合条件,就是条件为假时,就执行else。
所以,在if判断中,条件成立(if、else if)加上条件都不成立(else),才是以个完整的整体。
当然如果在声明时已经初始化了,两个条件都不符合,a还是原来初始化时的值,是有值的不会报错。
当然有人问,if(b>3)和else if(b<=3)已经把b所在的所有范围都包含了,但计算机只考虑条件内条件外,条件外没有相应代码,就不执行了。而且退一步说,如果b为虚数(比如)呢,就是else的范围了。
所以用if判断来给变量初始化时,就不要省略else了。
(初学者)关于用 if 对变量初始化的问题