#include<stdio.h>
#define exch(A,B) {int t=A;A=B;B=t;}
int main(void)
{
int a=1,b=4;
exch(a,b);
printf("%d\t%d\n",a,b);
return 0;
}
Prints:a=4,b=1
In the output, a and b have been exchanged; why is a macro not call by value? Please help me by explaining the result.