一个java题目,求解释

int a=0;
int b[]=new int[5];
int c=3;
b[a]=a=c;
最终a=?, b[0]还是b[3]被赋值呢?
一篇博客上看到的,这个程序究竟是怎么运行的?
最终的结果是b[0]=3 b[3]=0?

求解释?

最终结果:a的值是3,b[0]是值3,b[3]的值是0.

先定哪些变量要处理,因为a的值是0所以要处理的是b[0]和a.然后开始赋值,b[0]是a被赋于变量c所代表的值3.而b[3]仅被初始化,因类型是int,所以它的值是默认值0.

这个应该看编译器了。
现在编译器是这样的:
运行等号赋值之前b[a]=a=c; a=0那就是b[0] 0 3 b[a]已经固定住了为b[0]了
赋值之后,从右向左a=c a变成了3 而b[a]已经在赋值之前就已经是b[0]了。所以他还是
b[0]=a。。