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 ++ проверить это? Например, некоторые пытаются поймать строительство?

2

Решение

За
х = а * б;

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

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

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]