Суть в том, что ++a увеличивает значение и немедленно возвращает его.
a++ также увеличивает значение (в фоновом режиме), но возвращает неизмененное значение переменной - похоже, что оно выполняется позже.
Ответ 3
В обоих случаях сначала вычисляется значение, но в post-increment оно сохраняет старое значение и после вычисления возвращает его
++a
a = a + 1;
возвращает;
a++
temp = a;
a = a + 1;
возвращает temp;
Ответ 4
i = ++a + ++a + a++;
это
i = 6 + 7 + 7
Работаем: увеличиваем a до 6 (текущее значение 6) + увеличиваем a до 7 (текущее значение 7). Сумма равна 13, теперь добавьте ее к текущему значению a (= 7), а затем увеличьте a до 8. Сумма равна 20, а значение a после завершения присваивания равно 8.
i = a++ + ++a + ++a;
это
i = 5 + 7 + 8
Работает: начальное значение a равно 5. Используйте его при сложении, а затем увеличьте до 6 (текущее значение 6). Увеличьте a с текущего значения 6 до 7, чтобы получить другой операнд + . Сумма равна 12, а текущее значение a равно 7. Затем увеличьте a с 7 до 8 (текущее значение = 8) и добавьте его к предыдущей сумме 12, чтобы получить 20.