我需要定义一个预处理器宏 swap(t, x, y),它将在 C/C++ 中交换给定类型 t 的两个参数 x 和 y。任何人都可以对我如何做到这一点有任何意见吗?
最佳答案
如果您想交换 int 或 char(实现 XOR 运算符)等基本类型,您可以使用三重 XOR 技巧来交换值,而不需要额外的变量:
#define SWAP(a, b) \
{ \
(a) ^= (b); \
(b) ^= (a); \
(a) ^= (b); \
}
如果您要交换复杂类型(浮点型、结构体等),则需要一个辅助变量:
#define SWAP_TYPE(type, a, b) \
{ \
type __swap_temp; \
__swap_temp = (b); \
(b) = (a); \
(a) = __swap_temp; \
}
这两个宏的用法如下:
int a = 6;
int b = 123;
float fa = 3.1415;
float fb = 2.7182;
SWAP(a, b);
SWAP_TYPE(float, fa, fb);
关于c - 定义预处理器宏 swap(t, x, y),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26562491/