在 C 中,{ a[i] = a[++i] } 等价于 { a[i] = a[i+1];我++;}?

In C, is { a[i] = a[++i] } equivalent to { a[i] = a[i+1]; i++;}?

在 C 中,是

a[i] = a[++i];

相当于

a[i] = a[i+1]; i++;

即赋值的哪一边先求值,左边用i的什么值?还是这个赋值有歧义?

在您使用和递增的同一序列点中i

a[i] = a[i++];

这将导致未定义的行为。

a[i] = a[i+1];
i++;

很好。

并回答您的问题它们是否相同?不,他们不是 !!一个定义明确,另一个定义不明确。

勾选这个answer