问题描述
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。。
时间: 2024-09-09 14:49:54