ISO/IEC TS 17961 [chrsgnext]

Передающие аргументы к функциям обработки символа, которые не являются представимыми как char без знака

Описание

Управляйте определением

Передающие аргументы к функциям обработки символа, которые не являются представимыми как char без знака. [1]

Реализация Polyspace

Это средство проверки проверяет на Недопустимое использование стандартной целочисленной стандартной программы библиотеки.

Примеры

развернуть все

Проблема

Недопустимое использование стандартной целочисленной стандартной программы библиотеки происходит, когда вы используете недействительные аргументы с целочисленной функцией от стандартной библиотеки. Этот дефект берет:

  • Преобразование символов

    toupper, tolower

  • Символьные проверки

    isalnum, isalpha, iscntrl, isdigit, isgraph, islower, isprint, ispunct, isspace, isupper, isxdigit

  • Целочисленное деление

    div, ldiv

  • Абсолютные значения

    abs, labs

Фиксация

Фиксация зависит от первопричины дефекта. Часто детали результата показывают последовательность событий, которые привели к дефекту. Можно реализовать закрепление на любом событии в последовательности. Если детали результата не показывают историю события, можно проследить использование, щелкните правой кнопкой по опциям по исходному коду и смотрите предыдущие связанные события. См. также Интерпретируют Результаты Polyspace Bug Finder.

Смотрите примеры мер ниже.

Если вы не хотите устранять проблему, добавьте комментарии в свой результат или код, чтобы избежать другого анализа. Смотрите Результаты Polyspace Адреса Через Исправления ошибок или Выравнивания.

Пример - абсолютное значение большого отрицания

#include <limits.h>
#include <stdlib.h>

int absoluteValue(void) {

    int neg = INT_MIN;
    return abs(neg);
}

Входное значение к abs INT_MIN. Абсолютное значение INT_MIN INT_MAX+1. Этот номер не может быть представлен типом int.

Коррекция — изменяет входной параметр

Одна возможная коррекция должна измениться, входное значение, чтобы соответствовать возвратило тип данных. В этом примере измените входное значение в INT_MIN+1.

#include <limits.h>
#include <stdlib.h>

int absoluteValue(void) {

    int neg = INT_MIN+1;
    return abs(neg);
}

Проверяйте информацию

Разрешимость: неразрешимый

Введенный в R2019a


[1]  Выписки из стандарта "Техническая характеристика ISO/IEC TS 17961 - 2013-11-15" воспроизводятся с соглашением о AFNOR. Только исходный и полный текст стандарта, как опубликовано Выпусками AFNOR - доступный через веб-сайт www.boutique.afnor.org - имеет нормативное значение.