Multiplicação de macros de programação C [duplicado]
Duplicata Possível:
C Macros e uso de argumentos entre parênteses
Eu achei essa pergunta macro muito interessante.
Se este código a seguir for definido como uma macro
#define MULT(x, y) x * y
E a chamada de função é feita comoint z = MULT(3 + 2, 4 + 2);
. A saída desejada é 3 + 2 = 5 e 4 + 2 = 6 e 5 * 6 como 30.
Mas a saída retornada foi 13. Leva como 3 + 2 * 4 + 2. Assim, de acordo com a precedência dos operadores, ele avalia 2 * 4 primeiro.
Qual é a correção aqui? No caso de funções menores como estas, qual delas é eficiente? Definindo a função ou usando as macros?