MSVC использует 4 байта long
.Стандарт C ++ гарантирует, что long
будет иметь размер не менее 1003 *.Следовательно, максимальное число, представимое signed long
, равно 2.147.483.647
.То, что вы вводите, слишком велико для long
, и вам придется использовать больший тип данных с как минимум 64-битным.
Другой компилятор использовал 64-битную ширину long
, поэтому он работалтам.
Вы можете использовать int64_t
, который определен в cstdint
header .Что гарантировало бы 64-битный размер подписанного целого.
Ваша программа будет выглядеть так:
#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;
}
}