Отличие постфиксной и префиксной формы декрементирования при работе с массивами - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте.

Есть код, который работает(префиксная форма):

#include <stdio.h>
 
int main(void){
    int mas[10];
 
    mas[0] = 350;
    mas[1] = --mas[0];
    printf("%i", mas[1]);// Выводится 349. Все верно!
 
return 0;
}

Когда использую постфиксную форму, не получается(Выводит 350. А должно 349):

#include <stdio.h>
 
int main(void){
    int mas[10];
 
    mas[0] = 350;
    mas[1] = mas[0]--;
    printf("%i", mas[1]); // Не работает. Выводит 350. А должно 349.
 
return 0;
}

Откуда такие выводы?

Префиксное декрементирование происходит так: 1) mas[0] уменьшается на 1. 2) Уменьшенное значение заносится в mas[1]. Постфиксное декрементирование происходит так: 1) mas[1] присваивается значение mas[0], то есть 350. 2) Уменьшение присвоенного значения на 1

Что неправильно? Где я ошибаюсь?

Решение задачи: «Отличие постфиксной и префиксной формы декрементирования при работе с массивами»

textual
Листинг программы
mas[1] = mas[0]--;

Объяснение кода листинга программы

  1. Объявляется переменная типа массив mas с размером 20 элементов.
  2. В первом элементе массива mas хранится значение 10.
  3. Во втором элементе массива mas хранится значение 20.
  4. Значение второго элемента массива mas присваивается первому элементу массива mas.
  5. Значение первого элемента массива mas уменьшается на 1.
  6. Уменьшенное значение первого элемента массива mas присваивается второму элементу массива mas.
  7. Значение второго элемента массива mas становится равным 19.

Оцени полезность:

8   голосов , оценка 3.5 из 5
Похожие ответы