#include <stdio.h>
#define square(x) (x)*(x)

int main(){
int x,y;
x=2;
y=square(++x);
printf("x=%d\n",x);
printf("y=%d\n",y);

return 0;
}

で、なぜ
x=4
y=16
となるか分かりません。どのように展開されてるか
教えてください。