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
if(a > b)
if(c > d)
d = c;
else
d = b;不许用编译器哦,只许用眼睛看,请大家选出你们的正确答案。呵呵~~选择答案:
A.3
B.5
C.0
D.8
相当于
int a=3, b=5, c=8, d=0;
if(a > b)
{
if(c > d)
d = c;
else
d = b;
}
因为else与最近未配对的if配对,因为 a<b 所以if( c > d )没执行
因此else 与 if( c > d )配对。
if(a > b){
if(c > d)
d = c;
}
else
d = b;这样的话就很容易由于没有上面的{},所以我们还是要注意的
else 和最近的if配对
而第一个if没有else和它配对,所以还是初始化的值
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;
else会找最近的一个if配对.! 所以结构是
if(a>b)
{
if(....)
else
}
整个外围的if块就不会执行,所以各变量不变
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判断后该执行哪个语句!
if(a > b) System.out.println(d);//补充下这个输出语句不执行的 我只是为了让if语句后跟上一条语句,以免不执行下个if
if(c > d)
d = c;
else
d = b;
System.out.println(d);
当然楼主的正确答案 d=0
我这么改只是为了说明 上面那楼的意思! 我这么改的答案是8
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;
}
}
写完这些我才去测试了一下!呵呵,因为是新手!
所以为了看起来简单,就是下面的形式:
if(a > b){
if(c > d)
d = c;
}
else
d = b;
答案d=0
else跟和他最近的且没有配对的if相匹配,你这个跟原题意思不一样啊~~~~
故意那样写来误导人
写成
int a=3, b=5, c=8, d=0;
if(a > b)
if(c > d)
d = c;
else
d = b;
的话,谁都会作