黑马程序员技术交流社区

标题: 求答案 [打印本页]

作者: 穆玉明    时间: 2013-6-19 14:56
标题: 求答案
本帖最后由 穆玉明 于 2013-6-19 19:12 编辑


int  age=15;

char sex='f';

if(age<10)

if(sex=='f')

{Console.WriteLine("小女人");}

else

{Console.WriteLine("你长大了");}


请问最后输出什么  说明理由?
作者: 愛↘轉角    时间: 2013-6-19 15:36
什么都不输出吧
当碰到第一个if,age<10是false,就直接跳到else里了,而你这里没有外部if的else结构,
计算机当碰到else会默认寻找上一个最近的if(我也不知道怎么表达).就跟if(sex=='f')这个if匹配了
在第一个if之后加一对大括号把第二个if放进去就行了吧。。

作者: 陈壹    时间: 2013-6-19 15:56
什么都不输出,当if()后面不加{},那么它的执行语句只有条件后面的一句,后面的else属于if(sex=='f'),也就是说当age>10为true的情况下才执行iif(sex=='f'){}else{}的语句,结果就是什么都没有




作者: 顾磊磊    时间: 2013-6-19 16:03
我都有点不好意思回答了,:L
但还是得回答一下:lol
结果当然是什么都没有输出
原因很简单age<10为false
后面整个if(){}else{}语句都不会再执行了。
因为if和else是就近组合在一块的。
作者: y96352    时间: 2013-6-19 16:25
什么都没输出
if(age<10)
if(sex=='f')
因为没有加括号  那么if(sex=='f')就是if(age<10)判定成功后的执行语句   if(age<10)判定为false 那么if(sex=='f') 不执行
else是跟最近的if组合在一起的  if(sex=='f') 不执行的话  else 也没执行 所以最后什么都没有输出


作者: 李士茂    时间: 2013-6-19 16:43
什么都不输出,因为if默认只匹配与它最相近的一条语句,你的else对应着if(sex=='f')这个条件 而不是if(age<10)这个条件
作者: ◇゛ 仅此而以    时间: 2013-6-19 17:50
if(age<10)

if(sex=='f')
因为只有age < 10 的时候 第二个if 才会执行
而else 只匹配最近的if  所以 什么都不会输出
作者: 帕格尼尼的眼泪    时间: 2013-6-23 00:43
代码没有错误,但是什么都不会输出,因为else只跟它最近的 if 配对(if(sex==)),
作者: 帕格尼尼的眼泪    时间: 2013-6-23 00:51
代码没有错误,但是什么都不会输出,因为else只跟它最近的 if 配对,也就是if(sex=='f'),又因为age=15,所以会跳过if(age<10)这个条件,不会执行if(sex=='f'),esle是跟if(age<10)是一对,所以不会执行




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2