gpt4 book ai didi

c - 整数提升、C++ 和模板

转载 作者:太空宇宙 更新时间:2023-11-04 04:07:23 27 4
gpt4 key购买 nike

C 定义了关于整数提升的各种规则,这里是 great answer描述这是如何工作的。

在 GCC 中你可以这样做:

#define max(a,b) \
({ __typeof__ (a) _a = (a); \
__typeof__ (b) _b = (b); \
_a > _b ? _a : _b; })

它将评估为由上述 C 规则确定的类型的最大值。

在使用混合类型的 std::minstd::max 时,有必要提供适当的类型作为模板参数进行转换:

size_t const subcount = std::min<Offset>(count, treecap - offset);

要获得根据 C 整数提升规则评估类型的最小值/最大值,对于左右输入类型的每种组合,有必要知道类型如何相关以及结果类型是什么.

我希望执行最小/最大,与上面给出的 GCC 下的 C 示例具有相同的行为,并具有相同的提升(从而确保与 GCC 中的行为相同)。我如何在 C++ 和/或 MSVC 中执行此操作?

请注意,在执行此“自然”最小/最大后,我将立即numeric_casting 到预期的大小范围。

最佳答案

这里有一个非常好的实现,我已经将其用于各种项目:http://www.oonumerics.org/blitz/traits.html

关于c - 整数提升、C++ 和模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4106349/

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