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

解决方案 »

  1.   

    a=3, b=0, c=8, d=0????????正确答案是什么??
      

  2.   

     3 5 8 0 
    相当于
    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 )配对。
      

  3.   

    int a=3, b=5, c=8, d=0;
    if(a > b){
        if(c > d)
            d = c;
       }
    else
        d = b;这样的话就很容易由于没有上面的{},所以我们还是要注意的
      

  4.   

    d=0 
    else 和最近的if配对
    而第一个if没有else和它配对,所以还是初始化的值
      

  5.   

    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; 
      

  6.   

    d=8 else 总和他最近的那个if匹配
      

  7.   

    各变量的值没有变.
    else会找最近的一个if配对.!  所以结构是
    if(a>b)
    {
        if(....)
        else
    }
    整个外围的if块就不会执行,所以各变量不变
      

  8.   

    你和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判断后该执行哪个语句!
      

  9.   

    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
      

  10.   

    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;
        }
    }
    写完这些我才去测试了一下!呵呵,因为是新手!
      

  11.   

    if后面没有括号,说明后面只有一行执行语句,
    所以为了看起来简单,就是下面的形式:
    if(a > b){ 
        if(c > d) 
            d = c; 
      } 
    else 
        d = b; 
    答案d=0
      

  12.   

    else是就近原则嘛,这么简单。
      

  13.   

    你这个弄反了吧???
    else跟和他最近的且没有配对的if相匹配,你这个跟原题意思不一样啊~~~~
      

  14.   

    楼主太淫荡了
    故意那样写来误导人
    写成
    int a=3, b=5, c=8, d=0;
    if(a > b)
        if(c > d)
            d = c;
        else
            d = b;
    的话,谁都会作