日期:2014-05-20  浏览次数:20693 次

IBM的一道面试题,比较迷惑
public   class   Test
{
        public   static   void   main(String[]   args)
      {
              int   i   =   0   ;
              int[]   z   =   {   3   ,   7   }   ;
              z[i]   =   i   =   5   ;
              System.out.println(i   +   z[0]   +   z[1]);
      }
}
当时答题时蒙对了,运行结果是17
可是我一直比较迷惑,为什么是17,请高手给个详细的解释,小弟多谢了!

------解决方案--------------------
应该是因为“[]”优先级比“=”高,所以z[i]先被“求值”,即定位到z[0],之后,才是两个赋值开始起作用,按向右结合,等价于:
z[0] = (i = 5);
即:
i = 5;
z[0] = i;