gpt4 book ai didi

c - 定义预处理器宏 swap(t, x, y)

转载 作者:行者123 更新时间:2023-11-30 21:34:34 26 4
gpt4 key购买 nike

我需要定义一个预处理器宏 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com