首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-03-27 
用宏实现两个变量的交换纠结于这个宏定义:#defineswap1((x),(y))x(x)^(y)y(y)^(x)x(x)^(y)void main(

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

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

热点排行