什么会有3000000 ^ 2这样没有溢出的东西?
答案 0 :(得分:5)
3000000 ^ 2小于2 ^ 48,因此来自uint64_t
或cstdint
的{{1}}将保留您的电话号码。
答案 1 :(得分:2)
64位整数:
long long int
答案 2 :(得分: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位类型。 I long long
是唯一至少64位的标准整数,因此您需要一个支持c ++ 11的编译器。但可能是您的编译器支持其他一些非标准的64位类型。
答案 3 :(得分:1)