私はこのコードスニペットに困惑午前:それがあるべきように私はを期待していたなぜこの乗算に整数オーバーフローがありますか?
#include <climits>
#include <iostream>
int main(void) {
using namespace std;
cout << "long max " << LONG_MAX << endl;
long x = 2 * 1024 * 1024 * 1024;
cout << "2 * 1024 * 1024 * 1024 = " << x << endl;
return 0;
}
、代わりに私が取得しています。 unsignedを使用することは役に立たないようです。何を与える?
long max 9223372036854775807
2 * 1024 * 1024 * 1024 = -2147483648
「1024」と入力すると、すでにデータ型があり、この言語は整数です。したがって、長いデータ型が必要な場合は '1024L'を指定する必要があります。 – eis