Необходимость в скобках в макросах на С [дубликат]

This question already has an answer here:

C macros and use of arguments in parentheses 2 answers

Я пытался играть с определением макросаSQR в следующем коде:

#define SQR(x) (x*x)
int main()
{
    int a, b=3;
    a = SQR(b+5);      // Ideally should be replaced with (3+5*5+3), though not sure.
    printf("%d\n",a);
    return 0;
}

Это печатает23, Если я изменю определение макроса наSQR(x) ((x)*(x)) тогда результат, как и ожидалось,64, Я знаю, что вызов макроса в C заменяет вызов определением макроса, но я до сих пор не могу понять, как он рассчитывается23.

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

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