gpt4 book ai didi

c++ - 保证 f(ULLONG_MAX) * f(ULLONG_MAX) 不超过 ULLONG_MAX 的公式

转载 作者:行者123 更新时间:2023-12-04 07:19:43 24 4
gpt4 key购买 nike

我正在创建一个容器类,我想指定它的最大大小,如果乘以它自己,不应该超过 unsigned long long 的最大值。 (具体来说, std::numeric_limits<unsigned long long>::max() )。
假设 ULLONG_MAX 264-1 ,这种计算的安全性如何,必要时如何改进?

typedef unsigned long long size_type;
size_type max_size = size_type(std::sqrt(ULLONG_MAX)) - 1;

最佳答案

232的平方是264,太大了。
232 - 1 的平方是 264-233+1。
所以只需使用 232-1。
一般情况(static_cast<T>(1) << static_cast<T>(sizeof(T)*4)) - 1为您提供 T 类型的最大可平方无符号值, 如果 T是无符号整数类型。

关于c++ - 保证 f(ULLONG_MAX) * f(ULLONG_MAX) 不超过 ULLONG_MAX 的公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68585114/

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