C语言 这是数组的有效赋值吗?



这是一个代码的草稿。我想知道使用数组[j++]是否正确。同样,如果正确,j将首先递增,然后分配值或其他方式

int i=0, j=0;
int array[10];
for(i=0;i<10;i++)
{
array[j++] = i; /*Is this valid? the j++ part inside an array*/
}

是的,这是正确的,但读起来有点混乱。这样更好:

for (int i = 0, j = 0; i != 10; ++i, ++j)
{
    array[j] = i;
}

或者简单地说:

for (int i = 0; i != 10; ++i)
{
    array[i] = i;
}

是的,这是有效的,但它会在分配后递增j。要在分配之前递增j,您需要执行++j

这就是前递增与后递增的概念。

array[j++] = i;

相当于:

array[j] = i;
j++;

它是有效的,并且在分配后j递增。

调用未定义行为的方法是:

array[i++] = i;

它有效。 array[j++]增量j不是索引 j 处的元素。

array[j++] = *( array + (j++) ) ==> It just increments j, does not modify array

最新更新