Вам нужно использовать long long
для числа такого размера, чтобы ваш код был переносимым.
Вы используете систему, где ваш LONG_MAX
(то есть std::numeric_limits<long>::max()
) меньше чем 990099009900.
У этой гибкости есть свои недостатки, что является одной из причин, по которой были введены типы фиксированной ширины, такие как std::int64_t
.
Другой подход заключается в использовании
auto n = 990099009900;
и пусть компилятор выяснит это, хотя это может вызвать проблемы, если вы близки к пределу типа и увеличиваете n
.