Как ведёт себя этот код?

Input:

int main (void){
  int x = 10, z = 20;
  printf("%d %d %d\n", x++, x++, x++);
  printf("%d %d %d", ++z, ++z, ++z);
}

Output:

12 11 10
23 23 23

Ответы (1 шт):

Автор решения: Константин Николаевич Бояр II

++z увеличивает значение z, а затем возвращает z

x++ возвращает значение x, а затем увеличивает, именно по этой причине код ведет себя подобным образом

Как именно ведет себя код:

Создается функция, задаются переменные, идет вывод х и z, но x у вас изначально вернул значение, а потом увеличил, и так 3 раза, а z увеличил на 3, а потом вернул все 3 числа.

++z: загрузить z из памяти, увеличить, использовать, сохранить обратно в память.

x++: загрузка x из памяти, использование, увеличение, сохранение в памяти.

Очень влияет предоставили ли Вы параметр после извлечения, после использования или после хранения

→ Ссылка