读书人

用宏实现两个变量的交换解决思路

发布时间: 2012-03-27 13:44:24 作者: rapoo

用宏实现两个变量的交换
纠结于这个宏定义:

#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);会出问题

读书人网 >C语言

热点推荐