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.

Что за исправление здесь? В случае небольших функций, подобных этим, какая из них эффективна? Определение функции или использование макросов?

Ответы на вопрос(2)

Ваш ответ на вопрос