黑马程序员技术交流社区
标题:
为什么这句话的执行结果是什么都没有?
[打印本页]
作者:
朱传波
时间:
2013-2-26 13:10
标题:
为什么这句话的执行结果是什么都没有?
本帖最后由 朱传波 于 2013-2-27 10:47 编辑
int age=15;
char sex='f';
if (age<10)
if (sex=='f')
Console.WriteLine("小女人");
else
Console.WriteLine("你长大了");
Console.ReadKey();
复制代码
为什么以上代码的输出结果是什么都没有?
我知道 else 是和第二个 if 配对的
if 是默认情况下带一个执行语句的,那么,第一个 if 下面是空的,所以接下来应该读取第二个 if ,接下来应该输出“小女人”。
难道是在第一个 if 的读取过程中,将第二个 if 以及与其配对的 else 一并看做一个执行语句块了?
什么情况下算一个执行语句块?
2013-2-27 续:
谢谢各位的回复,我不是想问if代码的规范。
正如我所想的,第一个 if 后面没有{},于是接下来的一个if-else语句便成了第一个语句的语句块。
如果接下来继续写的话,就不是第一个 if 的控制范围了。如:
<font color="#ff0000">char sex='f';
if (age < 10)
if (sex == 'f')
Console.WriteLine("小女人");
else
Console.WriteLine("你长大了");
if (sex == 'f')
Console.WriteLine("小女人!");
else
Console.WriteLine("你长大了!");
Console.ReadKey();
}
}
}</font>
复制代码
这段代码输出的是 : 小女人!
由此便可验证。
作者:
王立
时间:
2013-2-26 13:21
写代码养成良好的习惯if后面加{}
int age = 15;
char sex = 'f';
if (age < 10)
{
if (sex == 'f')
{
Console.WriteLine("小女人");
}
}
else
{
Console.WriteLine("你长大了");
}
Console.ReadKey();
作者:
夏振博
时间:
2013-2-26 13:40
第一个if没有结束标记,你只是换行不代表它的功能结束,所以第二个if是在第一个if代码块执行范围内的,要养成良好的习惯,如楼上的代码,相信你如果写全的话,跟着思路走,这个问题自己就能想明白
作者:
郝滨
时间:
2013-2-26 13:45
if语句之后要有{} !
if (age < 10 && sex == 'f')
{
Console.WriteLine("小女人");
}
else
{
Console.WriteLine("你长大了");
}
Console.ReadKey();
作者:
xiaoxiang_04
时间:
2013-2-26 14:01
本帖最后由 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语句判断失败以后,后面的代码全都不运行了,加上{}就号了
作者:
HM张扬
时间:
2013-2-26 16:16
最后的readkey得有(),其他的没看..这是最重要的
作者:
丁涧泉
时间:
2013-2-27 03:34
我想楼主发这个帖子,不是在问我们具体的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();
还请老师指点.....
作者:
朱传波
时间:
2013-2-27 10:51
xiaoxiang_04 发表于 2013-2-26 14:01
int age=15;
char sex='f';
if (age
不是全部的都不运行了,而是第一个if 所带的只有一个语句块,之后再接的话就不在它的控制范围之内了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2