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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 朱传波 于 2013-2-27 10:47 编辑
  1. int age=15;
  2. char sex='f';
  3. if (age<10)
  4. if (sex=='f')
  5. Console.WriteLine("小女人");
  6. else
  7. Console.WriteLine("你长大了");
  8. Console.ReadKey();
复制代码
为什么以上代码的输出结果是什么都没有?

我知道 else 是和第二个 if 配对的

if 是默认情况下带一个执行语句的,那么,第一个 if 下面是空的,所以接下来应该读取第二个 if ,接下来应该输出“小女人”。

难道是在第一个 if 的读取过程中,将第二个 if 以及与其配对的 else 一并看做一个执行语句块了?

什么情况下算一个执行语句块?


2013-2-27 续:

谢谢各位的回复,我不是想问if代码的规范。
正如我所想的,第一个 if 后面没有{},于是接下来的一个if-else语句便成了第一个语句的语句块。
如果接下来继续写的话,就不是第一个 if 的控制范围了。如:
  1. <font color="#ff0000">char sex='f';
  2. if (age < 10)
  3.     if (sex == 'f')
  4.         Console.WriteLine("小女人");
  5.     else
  6.         Console.WriteLine("你长大了");
  7. if (sex == 'f')
  8.     Console.WriteLine("小女人!");
  9. else
  10.     Console.WriteLine("你长大了!");
  11. Console.ReadKey();
  12.         }
  13.     }
  14. }</font>
复制代码

这段代码输出的是 : 小女人!
由此便可验证。

评分

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

查看全部评分

7 个回复

倒序浏览
写代码养成良好的习惯if后面加{}





int age = 15;
            char sex = 'f';
            if (age < 10)
            {

                if (sex == 'f')
                {
                    Console.WriteLine("小女人");
                }
                  
            }
            else
            {
                Console.WriteLine("你长大了");
            }
            Console.ReadKey();

评分

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

查看全部评分

回复 使用道具 举报
第一个if没有结束标记,你只是换行不代表它的功能结束,所以第二个if是在第一个if代码块执行范围内的,要养成良好的习惯,如楼上的代码,相信你如果写全的话,跟着思路走,这个问题自己就能想明白

评分

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

查看全部评分

回复 使用道具 举报
if语句之后要有{} !
  if (age < 10 && sex == 'f')
     {
              Console.WriteLine("小女人");
      }
                         else
            {
                Console.WriteLine("你长大了");
            }
            Console.ReadKey();

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 xiaoxiang_04 于 2013-2-26 16:33 编辑

int age=15;
char sex='f';
if (age<10)
{
if (sex=='f')
Console.WriteLine("小女人");
else
Console.WriteLine("你长大了");
Console.ReadKey;}
你这么写代码,程序会认为是这样的

所以你第一个if语句判断失败以后,后面的代码全都不运行了,加上{}就号了

评分

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

查看全部评分

回复 使用道具 举报
最后的readkey得有(),其他的没看..这是最重要的
回复 使用道具 举报
我想楼主发这个帖子,不是在问我们具体的if else语句块是怎么书写的,我把这段代码复制到studio中,通过设置断点,一步步跟踪显示,当执行到age<10这个条件时,15<10为false,中间的所有代码,没有得到执行,直接到了Console.ReadKey(),然后什么也没有显示.我把age设为5,也就是5<10为true时,中间的代码得到了执行,综上,大家都知道if的语句在没有{}的情况下只能作用到下一行代码,是不是可以这么理解呢,第一句if判断就像去银行取钱的密码,密码错误什么也没有得到,当if判断为true时,就像密码验证正确,if下面的语句可以理解为银行系统的内部操作.readkey语句就像吐钞口吧.代码是否可以这样替换呢
int age = 15;
            char sex = 'f';
            if (age < 10)
                if (sex == 'f')
                    Console.WriteLine("小女人");
                else
                    Console.WriteLine("你长大了");
            else
                Console.WriteLine("密码错误");

            Console.ReadKey();
还请老师指点.....

评分

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

查看全部评分

回复 使用道具 举报
xiaoxiang_04 发表于 2013-2-26 14:01
int age=15;
char sex='f';
if (age

不是全部的都不运行了,而是第一个if 所带的只有一个语句块,之后再接的话就不在它的控制范围之内了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马