C Программирование умножения макросов [дубликаты]
Возможное дублирование:
C Макросы и использование аргументов в скобках
Я нашел этот макро вопрос очень интересным.
Если этот следующий код определен как макрос
#define MULT(x, y) x * y
И вызов функции выполняется какint z = MULT(3 + 2, 4 + 2);
. Желаемый выход составляет 3 + 2 = 5 и 4 + 2 = 6, а 5 * 6 равняется 30.
Но возвращенный результат был 13. Он принимает его как 3 + 2 * 4 + 2. Следовательно, в соответствии с приоритетом операторов, он сначала оценивает 2 * 4.
Что за исправление здесь? В случае небольших функций, подобных этим, какая из них эффективна? Определение функции или использование макросов?