Необходимость в скобках в макросах на С [дубликат]
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
.