用宏实现两个变量的交换
纠结于这个宏定义:
#define swap1((x),(y)) x=(x)^(y);y=(y)^(x);x=(x)^(y)
void main()
{
int a=3;
int b=4;
swap1(a,b);
printf("%d,%d",a,b);
}
程序编译为什么会出错?宏定义中各小变量都是要加括号的,是吗
[解决办法]
#define swap1(x,y) x=(x)^(y);y=(y)^(x);x=(x)^(y)
[解决办法]
这样
#define swap1(x,y) (x)=(x)^(y),(y)=(y)^(x),(x)=(x)^(y)
不然if(cond)swap1(x,y);会出问题