- Вперед: a * b > c подразумевает а > с / б >= с // б. (по определению пола. То же самое для a * b >= c)
- Обратно: a * b = 5 // 2, но НЕ 2 * 2 >= 5, как отмечает Марк Глисс в комментариях. В таком случае, как можно безопасно протестировать a * b >= c без переполнения?
Подробнее здесь: https://stackoverflow.com/questions/793 ... -a-b-c-for
Является ли a > c/b более безопасной эквивалентной (но избегающей переполнения) версией a * b > c для деления положитель ⇐ C++
-
Anonymous
Является ли a > c/b более безопасной эквивалентной (но избегающей переполнения) версией a * b > c для деления положитель
Это произошло в программе C++, которую я пишу для перебора цикла, где было указано, что условие цикла for a * b > c может переполниться. Я плохо разбираюсь в целочисленной математике, но думаю, математически игнорируя переполнение, a * b > c эквивалентно a > c // b, поэтому вторую форму можно использовать, чтобы избежать переполнения в коде C++. . Для ясности я буду использовать синтаксис Python: / означает рациональное деление, а // означает целочисленное деление:
Мобильная версия