Почему бы не они? Значения k
, n
и m
зависят от их размещения в коде.
Например,
m = j[k++];
на это будет влиять значение current k
.
Чтобы добавить немного об операторе до и после, заключите в кавычки C11
,
Глава §6.5.3.1, предварительное увеличение
Значение операнда префикса оператора ++
увеличивается на единицу. Результатом является новый
значение операнда после приращения. [...]
Глава §6.5.2.4, постинкремент
Результатом оператора постфикса ++
является значение операнда. Как побочный эффект,
значение объекта-операнда увеличивается (то есть значение 1 соответствующего типа
добавил к этому). [....]
Я добавил несколько операторов печати, чтобы проверить, как значения влияют после каждого оператора. Вы можете дополнительно распечатать весь массив, чтобы визуализировать изменения еще больше.
int j[5] = {5, 1, 15, 20, 25};
int k , l, m, n;
printf("j[1] = %d\n", j[1]);
k = ++j[1];
printf("j[1] = %d, k = %d\n", j[1], k);
n = ++j[1];
printf("j[1] = %d, n = %d\n", j[1], n);
l = j[1]++;
printf("j[1] = %d, l = %d\n", j[1], l);
m = j[k++];
printf("m= %d, k = %d\n", m, k);
printf("\n%d, %d, %d, %d", n, k, l, m );
и вывод:
j[1] = 1
j[1] = 2, k = 2
j[1] = 3, n = 3
j[1] = 4, l = 3
m= 15, k = 3
3, 3, 3, 15