int i=0;
int c =3;
int a[] = new int[5];
a[i]=i=c;
求a[5],i,的值;
为什么a[0]会等于3呀!而不是a[3]呀!

解决方案 »

  1.   

    虽然说赋值语句的执行过程是从右向左,但是a[i]中对于i的评价优先于赋值语句,所以i=0首先被a[i]看到代入,然后再执行i=c,c的值被代入到i中...一般来说死记住这个题型就好了...
      

  2.   

    执行到这句时,从左到右遇到a[i],将i=0,赋给就是a[0],继续往后扫描,遇到赋值号"=",对于赋值的执行顺序是自右向左,先执行最右的赋值将3赋给i,这个语句完了就是a[0]=3;
      

  3.   

    如果你懂得什么叫Eval and Apply就好了。不过可以这样理解,从左往右Eval每个变量,从右往左Apply每个付值。所以呢:Eval:
    a[i] ==> a[0];//0
    i ==> i; //0
    c ==> c; //3Apply:
    i = 3;
    a[0] = 3;