码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-04-09 09:39:32      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:src   line   分享   com   没有   简单   否则   oat   原因   

作为一个初学者,学习中会遇到很多问题。有些问题我们不知道为什么错了,因为在我们看来,是没有任何问题的,比如在学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 对变量初始化的问题

标签:src   line   分享   com   没有   简单   否则   oat   原因   

原文地址:http://www.cnblogs.com/dengjy/p/6683591.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!