C++ long long int overflow/underflow

Я делаю небольшую программу, решающую основные математические операции (*, /, +, -) а я пользуюсь long long int (64-разрядное число), поэтому я могу выполнять математические операции с большими числами.

Но есть проблема. Я могу проверить операнды, если они не превышают или не превышают лимит (используя LONG_LONG_MAX а также LONG_LONG_MIN). Но когда я (например) умножаю два очень больших числа (которые вызывают переполнение long long int) LONG_LONG_MAX проверка не работает. Скорее, результат для -4.

Есть ли шанс в C/C++ проверить это? Например, некоторые пытаются поймать строительство?

1 ответ

Решение

Для х = а * б;

if (a != 0 && x / a != b) {
// overflow handling
}

обратитесь к этому сообщению для более подробной информации

умножение больших чисел, как отловить переполнение

Другие вопросы по тегам