Деление округляет в меньшую сторону (-div-round-down)

Округлите частных в меньшую сторону от деления или модуля отрицательных чисел вместо окружения

Описание

Задайте, окружены ли частные от деления и модуля отрицательных чисел или вниз.

Примечание

a = (a / b) * b + a % b всегда верен.

Установите опцию

Пользовательский интерфейс (только десктопные решения): В вашей настройке проекта опция находится на узле Target & Compiler.

Командная строка: Используйте опцию -div-round-down. Смотрите информацию о Командной строке.

Почему использование эта опция

Используйте эту опцию, чтобы эмулировать ваш компилятор.

Опция важна только для компиляторов в соответствии со стандартом C90 (ISO/IEC 9899:1990). Стандарт предусматривает, что, "если или операнд / или % отрицательны, ли результат / оператор, являются самым большим целым числом меньше или равный, чем алгебраическое частное или самое маленькое целое число, больше или равное, чем частное, заданная реализация, то же самое для знака оператора %". Стандарт позволяет компиляторам выбирать свою собственную реализацию.

Для компиляторов в соответствии со стандартом C99 ((ISO/IEC 9899:1999), эта опция не требуется. Стандарт осуществляет деление с округлением по направлению к нулю (разделите 6.5.5).

Настройки

На

Если или операнд, / или % отрицательны, результат / оператор, является самым большим целым числом, меньше чем или равным алгебраическому частному. Результат оператора % выведен из a % b = a - (a / b) * b.  

Пример: assert(-5/3 == -2 && -5%3 == 1); верен.

От (значения по умолчанию)

Если или операнд / или % отрицательны, результатом оператора / является самое маленькое целое число, больше, чем или равный алгебраическому частному. Результат оператора % выведен из a % b = a - (a / b) * b.

Это поведение также известно как округление по направлению к нулю.

Пример: assert(-5/3 == -1 && -5%3 == -2); верен.

Информация о командной строке

Параметр: -div-round-down
Значение по умолчанию: 'off'
Пример (средство поиска ошибки):  polyspace-bug-finder -div-round-down
Пример (программа автоматического доказательства кода): polyspace-code-prover -div-round-down
Пример (сервер средства поиска ошибки): polyspace-bug-finder-server -div-round-down
Пример (сервер программы автоматического доказательства кода): polyspace-code-prover-server -div-round-down