C - array [i] ++ vs array [i ++]中的数组增量类型

sam*_*rat 8 c arrays

我想知道array[i]++和之间的区别是什么array[i++],其中数组是一个int array[10]

tas*_*oor 18

int a[] = {1, 2, 3, 4, 5};
int i = 1;
a[i]++;
printf("%d %d\n", i, a[i]);
a[i++];
printf("%d %d\n", i, a[i]);
Run Code Online (Sandbox Code Playgroud)

产量

1 3
2 3
Run Code Online (Sandbox Code Playgroud)

a[i]++在索引处递增元素i,它不会递增i.并且a[i++]增量i,而不是索引处的元素i.

  • 这个答案中缺少的是 `a[i]++` 和 `a[i++]` 的计算结果。 (2认同)
  • 该示例输出具有误导性,因为第二条语句中对“a[i++]”的访问实际上返回了索引“1”处的值,该值之前已增加到“3”。请注意,“x = a[i++];”等价于语句序列“x = a[i];” i++;` 因此 i 在递增之前*用作索引。 (2认同)

Dav*_*nan 17

  • array[i]++增加值array[i].表达式array[i]在递增之前进行求值.
  • array[i++]增加值i.表达式求值为array[i],之前i递增.

一个例证.

假设它array包含三个整数,0,1,2,并且它i等于1.

  • array[i]++更改array[1]为2,计算结果为1,i等于1.
  • array[i++]不修改array,评估为1并更改i为2.

您在此处使用的后缀运算符在递增之前计算表达式的值.


Sad*_*que 5

array[i]++是指( *(array+i) )++。--> 增加值。

array[i++]是指*( array + (i++) )。--> 增加索引。