Chinaunix首页 | 论坛 | 博客
  • 博客访问: 457975
  • 博文数量: 285
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 629
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-14 17:53
个人简介

相信自己,快乐每一天

文章分类

全部博文(285)

分类: LINUX

2013-11-01 14:44:18

前提是两个值不相等
#define SWAP(a,b)  (a = a + b, b = a - b, a = a - b)
#define SWAPP(a,b)  (a = a ^ b, b = a ^ b, a = a ^ b)
int main(size_t argc, char* argv[])
{
   int a = 10;
   int b = 20;
   char aa = 'c';
   char dd = 'd';
  // SWAP(a,b);
   //SWAP(aa,dd);
   SWAPP(a, b);
   SWAPP(aa, dd);
   printf("%d, %d\n",a,b);
   printf("%c, %c\n",aa,dd);
   system("pause");
   return 0;
}
如果我们在中间加入一个变量就可以不用顾及相等的问题了

#define SWAPPP(a, b, type) {type c; c = a; a = b; b = c;}
这样就不会有问题了,但是,当a和b是表达式的时候,可能还有问题,这个时候我们要加上一个小括号

#define SWAPPP(a, b, type) {type c; c = (a); (a) = (b); (b) = (c);}

如果还有什么问题,请大家指正,不胜感谢,在此,抛个砖,希望引来大家的玉,欢迎大家针对知识点进行讨论。
阅读(442) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~