前提是两个值不相等
#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);}
如果还有什么问题,请大家指正,不胜感谢,在此,抛个砖,希望引来大家的玉,欢迎大家针对知识点进行讨论。
阅读(481) | 评论(0) | 转发(0) |