假设我有两个int数组,array1和array2。
这一行:
array1[i++] = array2[j++];
等于:
array1[i] = array2[j];
i++;
j++;
答案 0 :(得分:3)
是的,它们是等效的,除非您已经写过#DEFINE i j
或#DEFINE j i
,在这种情况下,第一个代码段的行为是 undefined
答案 1 :(得分:2)
是的,这是允许的。
,你没有在一个没有序列点的语句中修改同一个变量两次如果您这样做,则会调用undefined behavior:
array1[i++] = array2[i++];
但这很好,因为逗号运算符引入了一个序列点:
array1[i++] = (j++,j++);