オーバーフローなしで 3000000^2 のようなものを保持するものは何ですか?
4 に答える
5
3000000^2 は 2^48 より小さいので、uint64_t
fromcstdint
またはstdint.h
は十分なマージンを持って数値を保持します。
于 2012-04-07T07:12:59.537 に答える
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 ++はさまざまな整数型を提供しますが、私が知る限り、64ビット型は標準のpre-c++11では義務付けられていませんでした。私long long
は少なくとも64ビットである唯一の標準整数であるため、c++11をサポートするコンパイラが必要になります。ただし、コンパイラが他の非標準の64ビット型をサポートしている可能性があります。
于 2012-04-07T07:16:27.373 に答える
2
64 ビット整数:
long long int
于 2012-04-07T07:11:15.953 に答える
1
「のようなもの」と言うとき、それはあなたが実際にあなたが保存したい数がどれくらい大きいかわからないことを示唆します。
ここ(たとえば)を見て、アプリケーションに最適な数値タイプを確認してください。
そのリストには64ビット整数があることに注意してください。それはどこでも利用できるわけではないからです。
于 2012-04-07T07:15:59.507 に答える