和大家探讨一个问题。不用编译器,光用眼睛看,能选出正确答案吗?

songyibei 2009-07-04 07:52:53
int a=3, b=5, c=8, d=0;
if(a > b)
if(c > d)
d = c;
else
d = b;


不许用编译器哦,只许用眼睛看,请大家选出你们的正确答案。呵呵~~

选择答案:
A.3
B.5
C.0
D.8
...全文
74 47 打赏 收藏 转发到动态 举报
写回复
用AI写文章
47 条回复
切换为时间正序
请发表友善的回复…
发表回复
Edwin603 2009-07-05
  • 打赏
  • 举报
回复
int a=3, b=5, c=8, d=0;
if(a > b) System.out.println(d);//补充下这个输出语句不执行的 我只是为了让if语句后跟上一条语句,以免不执行下个if
if(c > d)
d = c;
else
d = b;
System.out.println(d);

当然楼主的正确答案 d=0
我这么改只是为了说明 上面那楼的意思! 我这么改的答案是8
Edwin603 2009-07-05
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 hw31789 的回复:]
int a=3, b=5, c=8, d=0;
if(a > b) /*此行是false
if(c > d) /*不执行此行
d = c; /*else不能省略,所以此行是上一行的实例。
else
d = b;/*5赋值给d
d=5
请各位指教
13楼是对的吗?
int a=3, b=5, c=8, d=0;
if(a > b){
if(c > d)
d = c;
}
else
d = b;
[/Quote]
你和13楼的 都不对
9楼写的 才是对的
else是和第2个if配对的 按中国话走 如果。。。就。。。。
那么楼主给的 意思就是如果a>b 就执行 后面的if...else...
既然如果都不成立 那就不执行咯 所以还是 d=0
主要原因是 你们看到的这个例子和书本上的都不一样 原因在于 第一个if后没跟任何 正常写法的语句
也就是 如果。。。后没写就。。。。 所以如果后就跟了那个if...else...
加入改成书本上写的 比如这么改
int a=3, b=5, c=8, d=0;
if(a > b) System.out.println(d);
if(c > d)
d = c;
else
d = b;
System.out.println(d);

那么结果就变成正常看到书本上例子写法了!
楼主这个题主要说明了2点 1是 else和谁配对 2是if判断后该执行哪个语句!
javamode 2009-07-05
  • 打赏
  • 举报
回复
c
「已注销」 2009-07-05
  • 打赏
  • 举报
回复
基础了
guliangwo 2009-07-05
  • 打赏
  • 举报
回复
是c
xiongzhijian 2009-07-05
  • 打赏
  • 举报
回复
晕...
Delta 2009-07-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 panguo33 的回复:]
应该是0
[/Quote]
C啊。
xiezhiqu 2009-07-05
  • 打赏
  • 举报
回复
选 C
cantalou 2009-07-05
  • 打赏
  • 举报
回复
楼上的 这跟排版没关系吧
scueczhang 2009-07-05
  • 打赏
  • 举报
回复
if后面没有括号,说明后面只有一行执行语句,
所以为了看起来简单,就是下面的形式:
if(a > b){
if(c > d)
d = c;
}
else
d = b;
答案d=0
reff1 2009-07-05
  • 打赏
  • 举报
回复
楼主太淫荡了
故意那样写来误导人
写成
int a=3, b=5, c=8, d=0;
if(a > b)
if(c > d)
d = c;
else
d = b;
的话,谁都会作
hahachinahaha 2009-07-05
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 chu2009 的回复:]
int a=3, b=5, c=8, d=0;
if(a > b){
if(c > d)
d = c;
}
else
d = b;

这样的话就很容易

由于没有上面的{},所以我们还是要注意的
[/Quote]
你这个弄反了吧???
else跟和他最近的且没有配对的if相匹配,你这个跟原题意思不一样啊~~~~
xy111222333 2009-07-05
  • 打赏
  • 举报
回复
答案:C
小曦子 2009-07-05
  • 打赏
  • 举报
回复
c
CamilleTao 2009-07-05
  • 打赏
  • 举报
回复
int a=3, b=5, c=8, d=0;
if(a > b)
if(c > d)
d = c;
else
d = b;
我是新手,发表下我的看法
如果是问d的值。我认为是0
分析如下
1.if(a>b)
//上句值为false;
2.if(c>d)
d=c;
//那么这句的代码就不会执行;
3.else
d=b;
//我认为关键混淆的是这句
else在上下都没有{}的作用下。是匹配离它最近的一个if语句。
那么离他最近的if(c>d),但这条语句又是包含在if(a>b)内的。
所以我认为是0
不全上面的写法应该如下:
int a=3, b=5, c=8, d=0;
if(a > b){
if(c > d){
d = c;
}else{
d = b;
}
}
写完这些我才去测试了一下!呵呵,因为是新手!
s32032033 2009-07-05
  • 打赏
  • 举报
回复
else是就近原则嘛,这么简单。
zhangcongfd 2009-07-04
  • 打赏
  • 举报
回复
恩。同意。各变量都没变
izard999 2009-07-04
  • 打赏
  • 举报
回复
各变量的值没有变.
else会找最近的一个if配对.! 所以结构是
if(a>b)
{
if(....)
else
}
整个外围的if块就不会执行,所以各变量不变
islandrabbit 2009-07-04
  • 打赏
  • 举报
回复
同意28楼的看法
jinxfei 2009-07-04
  • 打赏
  • 举报
回复
学编程又不是搞脑筋急转弯,对不对。

楼主不要生气,多花点精力在编程的思路和业务热点上吧。
加载更多回复(27)

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧