Переменные диапазоны

Если Polyspace® не может определить значение переменных из кода, он принимает, что переменная имеет полный спектр значений, позволенных его типом.

Например, для переменной целочисленного типа, чтобы определить минимальное и позволенное максимальное значение, Polyspace использует следующие критерии:

  • Стандарт C указывает, что областью значений n со знаком битная переменная целочисленного типа должен быть, по крайней мере, [-(2n-1-1), 2n-1-1].

    Target processor type, который вы задаете, определяет количество битов, выделенных для определенного типа. Для получения дополнительной информации смотрите Target processor type (-target).

  • Polyspace принимает, что ваша цель использует дополнительное представление two для целых чисел со знаком. Программное обеспечение использует это представление, чтобы определить точную область значений переменной. В этом представлении области значений n со знаком битной переменной целочисленного типа является [-2n-1, 2n-1-1].

Например, для процессора i386:

  • Переменная char имеет 8 битов. Стандарт C указывает, что область значений переменной char должна быть [по крайней мере-127 127].

  • Используя дополнительное представление two, Polyspace принимает, что точная область значений переменной char [-128 127].

Чтобы определить область значений, которую Polyspace принимает для определенного типа:

  1. Запустите верификацию на этом коде. Замените type на имя типа, такое как int.

    type getVal(void);
    void main() {
    		type val = getVal();
    }

  2. Откройте свои результаты верификации. На панели Source установите свой курсор на val.

    Подсказка предоставляет спектр, который Polyspace принимает для type. Поскольку getVal не задан, Polyspace принимает, что возвращаемому значению getVal позволил полный спектр значений type.