在大多数情况下 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;

 

posted on 2020-11-24 11:59  Vinlen  阅读(256)  评论(0编辑  收藏  举报