C语言两个数交换
1. 方法
1.1 使用临时变量
tmp = x;
x = y;
y = x;
1.2 使用异或操作
注意:两个操作数不能为同一个,否则交换后为0。
x ^= y;
y ^= x;
x ^= y;
1.3 使用加减操作
注意:溢出并不影响数交换。
x = x + y;
y = x - y;
x = x - y;
1.4 使用入栈出栈
_asm
{
push x;
push y;
pop x;
pop y;
}
2. 测试
2.1 代码
#include <stdio.h>
#include <limits.h>
#define uint unsigned int
/* 宏-临时变量交换法 */
#define SWAP_TMP(x,y) \
do{ \
typeof(x) tmp = x; \
x = y; \
y = tmp