-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);
является true.
Если оба операнда /
или %
отрицательно, результат /
оператор является наименьшим целым числом, большим или равным алгебраическому фактору. Результат %
оператор выводится из a % b = a - (a / b) * b
.
Это поведение также известно как округление к нулю.
Пример: assert(-5/3 == -1 && -5%3 == -2);
является true.
Параметр:
-div-round-down |
По умолчанию: Off |
Пример (Bug Finder):
polyspace-bug-finder -div-round-down |
Пример (Code Prover):
polyspace-code-prover -div-round-down |
Пример (Bug Finder Server): polyspace-bug-finder-server -div-round-down |
Пример (Code Prover Server):
polyspace-code-prover-server -div-round-down |