在大多数情况下 v+=e 等价于 v=v+e; 这里的等价含义为当c不是表达式时他们的运行结果一致(但是运行次数永远不一致)。
v+=e 只运行了一次运算 v=v+e运行了两次运算。
int a[]={1,2,3,4,5},i=0;
a[i++]=a[i++]+2; //此时数组为{1,3,3,4,5}
a[i++]+=2; //此时数组为{3,2,3,4,5}
在以上特殊条件下两个表达式并不对等。
补充: 在c,c#,java中,同样的代码含义不一致
在c语言中
int a[]={1,2,3,4,5},i=0; a[i++]=a[i++]+2; //此处等同于 arr[1]=arr[0]+2;
//此行代码执行之后 i=2;
在java中
int[] arr={1,2,3,4,5}; int i=0; arr[i++]=arr[i++]+2;
//此处等于 arr[0]=arr[1]+2;
不和别人一样,不复制只真正理解