(1) if (x==1)              (2) if (x==1)         if (y==1)                 {if (y==1) aa=1;           aa=1;                      }     else aa=2;             else aa=2;(1)中的else与if(y==1)相配;(2)中的else与if(x==1)相配。为什么一加花刮号就变了,我还是不明白这两个代码?花刮号里执行的语句呢?

解决方案 »

  1.   

    1)
    if( x==1) {
     if (y==1) {
      aa=1;
     }
     else {
      aa = 2;
     }
    }
    匹配是就近原则的. 2) 
    if (x==1) { 
      if (y==1) {
        aa =1;
      }
    }
    else {
      aa = 2;
    }
      

  2.   

    (1)相当于这样:
    (1) if (x==1)                      if (y==1){                           aa=1;                 
            }else aa=2;            
      

  3.   

    (1)相当于:if(x == 1) {
        if(y == 1) {
            aa = 1;
        } else {
            aa = 2;
        }
    }(2)相当于:if(x == 1) {
        if(y == 1) {
            aa = 1;
        }
    } else {
        aa = 2;
    }
      

  4.   

    else默认与仅挨着的if匹配,但是由于你上面有个{},导致{}中的if作为上一个if的语句体了,建议lz学好基础吧
      

  5.   

    我认为哪怕 if while for 什么的后面语句只有一行,为了不引起误解,最好也加上花括号。
      

  6.   


    if( x==1) { 
     if (y==1) { 
      aa=1; 
     } 
     else { 
      aa = 2; 
     } 

    匹配是就近原则的.  2)  
    if (x==1) {  
      if (y==1) { 
        aa =1; 
      } 

    else { 
      aa = 2; 
    }