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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 穆玉明 中级黑马   /  2013-6-19 14:56  /  1686 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 穆玉明 于 2013-6-19 19:12 编辑


int  age=15;

char sex='f';

if(age<10)

if(sex=='f')

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

else

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


请问最后输出什么  说明理由?

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

8 个回复

倒序浏览
什么都不输出吧
当碰到第一个if,age<10是false,就直接跳到else里了,而你这里没有外部if的else结构,
计算机当碰到else会默认寻找上一个最近的if(我也不知道怎么表达).就跟if(sex=='f')这个if匹配了
在第一个if之后加一对大括号把第二个if放进去就行了吧。。

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
什么都不输出,当if()后面不加{},那么它的执行语句只有条件后面的一句,后面的else属于if(sex=='f'),也就是说当age>10为true的情况下才执行iif(sex=='f'){}else{}的语句,结果就是什么都没有



评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
我都有点不好意思回答了,:L
但还是得回答一下:lol
结果当然是什么都没有输出
原因很简单age<10为false
后面整个if(){}else{}语句都不会再执行了。
因为if和else是就近组合在一块的。

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
什么都没输出
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 也没执行 所以最后什么都没有输出

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
什么都不输出,因为if默认只匹配与它最相近的一条语句,你的else对应着if(sex=='f')这个条件 而不是if(age<10)这个条件

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
if(age<10)

if(sex=='f')
因为只有age < 10 的时候 第二个if 才会执行
而else 只匹配最近的if  所以 什么都不会输出

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
代码没有错误,但是什么都不会输出,因为else只跟它最近的 if 配对(if(sex==)),
回复 使用道具 举报
代码没有错误,但是什么都不会输出,因为else只跟它最近的 if 配对,也就是if(sex=='f'),又因为age=15,所以会跳过if(age<10)这个条件,不会执行if(sex=='f'),esle是跟if(age<10)是一对,所以不会执行
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马