如何以类型的安全方式分配UINT32_T :: MAX和UINT64_T的最小值
How to assign min of uint32_t::max and uint64_t in type safe manner?
我想以类型的安全方式分配两个UINT64_T数字的最小差值和UINT32_T的最大数值限制。有办法做到吗?
uint32_t max32 = std::numeric_limits<uint32_t>::max();
uint64_t a, b;
uint32_t minValue = std::min(max32, b - a);
^^^^^^ (Parameter mismatch warning)
基本上。如果A和B之间的差异大于UINT32_T的最大值,则我想使用最大值,否则我想使用差异。我需要在仅接受uint32_t的API中使用minValue
。
您可以使用:
minValue = static_cast<uint32_t>(
std::min(static_cast<uint64_t>(max32),
a < b ? b - a : a - b));
static_cast
从max32
创建一个64位的无符号值,以匹配a
和b
的差异类型。
请注意,当您从较小的数字中减去较大的未签名数字时,结果通常会缠绕 - 通常是很大的数字。例如,(uint8_t)2 - (uint8_t)3
将产生255。这就是为什么我使用?
/:
逻辑来解决哪种方式执行扣除的原因。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 使用递归的数组的最小值.这是怎么回事
- 如何创建一个函数来计算并返回平均值、最大值和最小值
- 在二维数组中查找最小值和最大值?
- 有没有办法使用递归函数找到数组中最小值的 INDEX?C++
- 程序以使用 C++ 中的 while 循环查找一组数字的最小值
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- C++ 函数,用于查找传入的 N 个数字的平均值、总和、最小值和最大值
- txt 文件中浮点数的最大和最小值
- 余数运算符的等效操作,用于处理低于允许的最小值
- 需要使用模板查找数组的第二个最小和最小值
- CUDA - 将 float3 数组的 (x,y,z) 分量的最小值/最大值分开?
- 查找包含 N 个元素的数组的最小值和最大值
- 错误C++在Visual Studio 2019中使用numeric_limits的长双精度最小值/最大值
- 是否存在用于 C 或 C++ 中常见数学运算(例如最小值、最大值和平均值)的可导入库?
- 如何在 c++ 中创建对的优先级队列.这会弹出具有最小值的元素.默认的弹出最大值
- 将最小值整数转换为无符号长整型
- 查找 std::vector 中的最小值和最大值 std::p air
- 如何找到每行的最大值和最小值
- 如何以类型的安全方式分配UINT32_T :: MAX和UINT64_T的最小值