什么样的数据类型将在C ++中容纳3000000 ^ 2?

时间:2012-04-07 07:09:34

标签: c++

什么会有3000000 ^ 2这样没有溢出的东西?

4 个答案:

答案 0 :(得分:5)

3000000 ^ 2小于2 ^ 48,因此来自uint64_tcstdint的{​​{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)

如果您说“类似”,则表明您实际上并不确定要存储的数字有多大。

看看here(比如说​​),看看哪种数字类型最适合您的应用。

请注意该列表中有64位整数;那是因为它无处不在。