ISO/IEC TS 17961 [chrsgnext]

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

Описание

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

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

Примеры

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

Описание

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

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

    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 - имеет нормативное значение.