gpt4 book ai didi

c++ - static_cast(-1) 是在没有 numeric_limits 的情况下生成全一位数据的正确方法吗?

转载 作者:IT老高 更新时间:2023-10-28 12:46:32 25 4
gpt4 key购买 nike

我在一个无法访问 C++ 标准库的环境中编写 C++ 代码,特别是无法访问 std::numeric_limits .假设我要实现

template <typename T> constexpr T all_ones( /* ... */ )

专注于无符号整数类型,我该放什么?具体来说,是 static_cast<T>(-1)够好了? (根据我猜的大小,我可以将其他类型视为无符号字符数组。)

最佳答案

使用 bitwise NOT接线员 ~0 .

T allOnes = ~(T)0;

一个 static_cast<T>(-1)假定二进制补码,这是不可移植的。如果您只关心无符号类型,hvd's answer是要走的路。

工作示例:https://ideone.com/iV28u0

关于c++ - static_cast<T>(-1) 是在没有 numeric_limits 的情况下生成全一位数据的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36675858/

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