MSVC использует 4Byte long. Стандарт C ++ гарантирует, intчто он не меньше int. Поэтому максимальное число, представимое через a signed longis 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;
}
}