gpt4 book ai didi

c - 在 C 中定义 "between"宏的最佳方式

转载 作者:太空狗 更新时间:2023-10-29 15:49:19 25 4
gpt4 key购买 nike

什么是定义泛型(char、int、long)之间宏的最佳方法如果一个数字介于输入的其他数字之间,它将返回 true。我试着用谷歌搜索它,但我没有找到任何东西。

编辑:给定的两个边界的顺序无关紧要。所以它可以更通用。

最佳答案

如果你这样做:

#define BETWEEN(a, b, c)  (((a) >= (b)) && ((a) <= (c)))

您将遇到 a 的双重计算问题。想想如果你用一个有副作用的函数来做会发生什么......

您应该改为执行以下操作:

#define BETWEEN(a, b, c) ({ __typeof__ (a) __a = (a); ((__a) >= (b) && ((__a) <= (c)) })

(已编辑,因为结果不应取决于 b 和 c 的顺序):

#define BETWEEN(a, b, c) \
({ __typeof__ (a) __a = (a);\
__typeof__ (b) __b = (b);\
__typeof__ (c) __c = (c);\
(__a >= __b && __a <= __c)||\
(__a >= __c && __a <= __b)})

关于c - 在 C 中定义 "between"宏的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8292852/

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