Я думаю, что для решения вашей проблемы используется unsigned int
вместо int
. Специально для вашего кода используйте
unsigned int sum = 1;
Если вы хотите узнать, каков предел ваших типов, вы можете использовать метод sizeof()
. Обычно для int
возвращается 2 или 4 (байта). В случае 2 байтов ваш лимит составляет 32 768. В большинстве случаев это будет 4 байта с пределом 2 147 483 648. Если вы знаете, что собираетесь работать только с положительными числами, лучше использовать unsigned int
. Таким образом, вы получаете в два раза больше опций, и лимиты соответственно равняются 65 536 и 4 294 967 296
И если вы считаете, что этих пределов недостаточно для расчета, вам следует рассмотреть возможность изменения типа int
на long
. Его размер составляет 8 байт, и этого более чем достаточно.