Can someone explain me how we get these outputs? especially the third output (6), thanks.
#define A(x) ((x)+(x))
#define B(x) (2*(x))
int main()
{
int a = 1;
printf("%d\n", A(a++)); // print 3
a=1;
printf("%d\n", B(a++)); // print 2
a=1;
printf("%d\n", A(++a)); // print 6
a=1;
printf("%d\n", B(++a)); // print 4
return 0;
}