Я делаю небольшую программу, решающую основные математические операции (*
, /
, +
, -
) а я пользуюсь long long int
(64-разрядное число), поэтому я могу выполнять математические операции с большими числами.
Но есть проблема. Я могу проверить операнды, если они не превышают или не превышают лимит (используя LONG_LONG_MAX
а также LONG_LONG_MIN
).
Но когда я (например) умножаю два очень больших числа (которые вызывают переполнение long long int
) LONG_LONG_MAX
проверка не работает. Скорее, результат для -4.
Есть ли шанс в C / C ++ проверить это? Например, некоторые пытаются поймать строительство?
За
х = а * б;
if (a != 0 && x / a != b) {
// overflow handling
}
обратитесь к этому сообщению для более подробной информации
Других решений пока нет …