Инкремент в макроподстановке - C (СИ)

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

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

#define max(A, В) ((А) > (В) ? (А) : (В))
Если я пошлю в max i++ и j++ (то есть max(i++, j++) ), то, как я прочитал в книге, это вызовет увеличение i и j дважды. Но я так и не разобрался, почему. Подскажите. Спасибо.

Решение задачи: «Инкремент в макроподстановке»

textual
Листинг программы
#define max(a,b) \
   ({ __typeof__ (a) _a = (a); \
       __typeof__ (b) _b = (b); \
     _a > _b ? _a : _b; })

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

  1. Представленный код является определением макроса max для инкремента в макроподстановке.
  2. Макроподстановка используется для инкремента значения переменной _a на единицу.
  3. Значение переменной _b не изменяется.
  4. Результатом работы макроса max будет максимальное значение из двух сравниваемых чисел.
  5. Если _a больше _b, то возвращается _a.
  6. Если _b больше _a, то возвращается _b.
  7. В обоих случаях возвращаемое значение будет максимальным из двух сравниваемых чисел.
  8. Возвращаемое значение будет иметь тип, который будет соответствовать типу переменной _a.
  9. В данном случае, код не выполняет никаких действий, кроме сравнения и возврата значения.
  10. В данном случае, код не зависит от порядка вызова, так как не сохраняет состояние между вызовами.
  11. В данном случае, код не содержит управляющих конструкций, таких как условные операторы или циклы.
  12. В данном случае, код не содержит операторов ввода-вывода.
  13. В данном случае, код не содержит операторов присваивания.
  14. В данном случае, код не содержит операторов арифметических операций, кроме сравнения.
  15. В данном случае, код не содержит операторов логических операций.
  16. В данном случае, код не содержит операторов присваивания.
  17. В данном случае, код не содержит операторов управления потоком.
  18. В данном случае, код не содержит операторов возврата из функции.
  19. В данном случае, код не содержит операторов вызова функций.
  20. В данном случае, код не содержит операторов комментирования.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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