大一基础C语言题求解

#include <stdio.h>
#define SQR(y) y*y

int main(){
int a, b=4;
a=SQR(b+1);
printf("a=%d",a);

return 0;

}

为啥a等于9而不是25

3+1*1+3。 它不会自己带括号

a=SQR(b+1)变为a=b+1b+1
此时b=4
所以a=4+1
4+1=9


SQR(b+1)是替换成了 b+1*b+1=4+4+1=9,要25的话是#define SQR(y) (y)*(y)