什么会保持像 3000000^2 这样的东西而不会溢出?
问问题
293 次
4 回答
5
3000000^2 小于 2^48,因此uint64_t
from cstdint
orstdint.h
将保留您的号码并保持良好的边距。
于 2012-04-07T07:12:59.537 回答
2
64位整数:
long long int
于 2012-04-07T07:11:15.953 回答
2
您可以使用std::numeric_limits
. 在 c++11 中,long long
是至少 64 位的标准整数,因此,例如,unsigned long long
有以下限制:
#include <iostream>
#include <limits>
int main() {
std::cout << "sizeof : " << sizeof(unsigned long long) << "\n";
std::cout << "min : "<< std::numeric_limits<unsigned long long>::min() << "\n";
std::cout << "max : "<< std::numeric_limits<unsigned long long>::max() << "\n\n";
}
在我的平台上制作:
sizeof : 8
min : 0
max : 18446744073709551615
C++ 提供了各种整数类型,但据我所知,标准 pre-c++11 并未强制要求 64 位类型。Ilong long
是唯一一个至少为 64 位的标准整数,因此您需要一个支持 c++11 的编译器。但可能是您的编译器支持其他一些非标准的 64 位类型。
于 2012-04-07T07:16:27.373 回答
1
于 2012-04-07T07:15:59.507 回答