MSVC использует 4Byte long
. Стандарт C ++ гарантирует, int
что он не меньше int
. Поэтому максимальное число, представимое через a signed long
is 2.147.483.647
. То, что вы вводите, слишком велико, чтобы удерживать его, long
и вам придется использовать больший тип данных с не менее 64 бит.
Другой компилятор использовал 64-битную шину long
, из-за которой она работала там.
Вы можете использовать, int64_t
который определен в cstdint
заголовке . Это гарантировало бы 64-битный размер подписанного int.
Ваша программа будет читать:
#include <cstdint>
#include <iostream>
#include <array>
using namespace std;
int main()
{
array<int64_t, 3> test_vars = { 121, 319225, 15241383936 };
for (int64_t test_var : test_vars) {
cout << test_var << endl;
}
}