A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李龙祺 中级黑马   /  2012-12-8 16:47  /  2267 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

if()
if(){}
else{}
当第一个if条件不满足时,是没有输出结果的。比如
  1. int age = 12;
  2.             char sex = 'f';
  3.             if (age < 10)
  4.             
  5.                 if (sex=='f')
  6.                     Console.WriteLine("小孩");
  7.                 else
  8.                     Console.WriteLine("成年");
  9.             Console.ReadKey();
复制代码
但是我发现如果在第一个if后加上个空{}就有了输出结果
if(){}
if(){}
else{}

求解释

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

8 个回复

倒序浏览
int age = 12;
            char sex = 'f';
            if (age < 10)          //此处没有分号或者执行语句来结束这个if判断,而当你加了{}之后就相当于执行了一个空的执行语句,也就可以结束这个if判断,也就进入下一个if语句了
            
                if (sex=='f')
                    Console.WriteLine("小孩");
                else
                    Console.WriteLine("成年");
            Console.ReadKey();

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
int age = 12;
char sex = 'f';
     if (age < 10)//if()后面必须跟上相应的处理语句,空行不代表是它的处理语句,编译的时候会跳过空行找它后面的语句。后面的if...else...属于一个语句,它们现在是if(age<10)的处理语句。现在的意思是如果年龄小于10,才进行后面if(sex=='f')...else...的判断。

         if (sex=='f')
         Console.WriteLine("小孩");
         else
         Console.WriteLine("成年");

Console.ReadKey();


int age = 12;
char sex = 'f';
            if (age < 10)//加上{}后,{}中封装的是if(age<10)的处理语句,即使是空的也代表if(age<10)有了处理方式
        {}
                     if (sex=='f')//现在if(sex=='f')...else...就独立出来了,跟上面的if(age<10)没有关系,只是进行sex的判断,顺便一提,缩进只是使程序看起来更清晰,并不是缩进了就是前者的子语句
                     Console.WriteLine("小孩");
                     else
                     Console.WriteLine("成年");

Console.ReadKey();

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
第一个if后加上{}后就组成了一个完整的if语句,正常输出;后面的if和else则组成if——else语句,表示如果     否则   。所以是两个分支类型的语句

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
if(1){11}这里判断1是否成立,如果成立执行11这个结果。
if(2){22}如果上边的1不成立会判断这里的2是否成立,如果成立则执行22语句。
else{33}如果上边的1和2都不成立的话这里就直接执行33语句了。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
if(条件)
语句1;表明如果条件成立,执行语句1,如果不成立,跳过语句1,执行下面的代码
if(条件)
{
语句1;
语句2;
}表明表明如果条件成立,执行语句1和语句2,如果不成立,跳过语句快,执行下面的代码
所以说当你在第一个if语句后面不加大括号,表明if语句控制他下面的一条语句是否执行,也就是后面的if...else...,是if(age<10)的处理语句。意思就是是如果年龄小于10,才进行后面if(sex=='f')...else...的判断。判断不成立,所以后面的不执行
当你加了一个大括号之后,表明if语句控制他下面的一条空语句是否执行,对后面的if...else...没有影响,所以后面的if...else...会继续执行,所以有结果


评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
这个牵扯到编程习惯问题,即使if,for等此类语句后只有一句代码,也要加{},方便查阅与找错

由于没有{}带来的错误是很麻烦而且没有必要的!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
if(条件1){语句1}
if(条件2){语句2}
else{语句3}

判断条件1是否成立如果成立则执行语句1,然后判断条件2是否成立如果成立则执行语句2,否则执行语句3

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
  if (age < 10) 后面没有加{}时 程序执行到这步之后因为没有处理的语句,程序就不会继续执行,加上之后代表是个空语句,执行完之后会继续向下执行。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马