Отличие постфиксной и префиксной формы декрементирования при работе с массивами - 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]--;
Объяснение кода листинга программы
- Объявляется переменная типа массив
masс размером 20 элементов. - В первом элементе массива
masхранится значение 10. - Во втором элементе массива
masхранится значение 20. - Значение второго элемента массива
masприсваивается первому элементу массиваmas. - Значение первого элемента массива
masуменьшается на 1. - Уменьшенное значение первого элемента массива
masприсваивается второму элементу массиваmas. - Значение второго элемента массива
masстановится равным 19.