AUTOSAR C++14 Rule M4-5-3

Выражения с типом (простой) char и wchar_t не должны использоваться в качестве операндов к встроенным операторам кроме оператора присваивания =, операторы равенства == и! =, и унарное & оператор.

Описание

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

Выражения с типом (простой) char и wchar_t не должны использоваться в качестве операндов к встроенным операторам кроме оператора присваивания =, операторы равенства == и! =, и унарное & оператор.

Объяснение

C++ 03 Стандарта только требует что символы '0' к '9' имейте последовательные значения. Другие символы не имеют четко определенных значений. Если вы используете эти символы в операциях кроме тех упомянутых в правиле, вы неявно используете их базовые значения и можете видеть неожиданные результаты.

Поиск и устранение проблем

Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.

Примеры

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

void charManipulations (char ch) {
   
    char initChar = 'a'; //Compliant
    char finalChar = 'z'; //Compliant
    
    if(ch == initChar) {} //Compliant 
    if( (ch >= initChar) && (ch <= finalChar)) {} //Noncompliant 
    else if( (ch >= '0') && (ch <= '9') ) {} //Compliant by exception
}

В этом примере символьные операнды не нарушают правило, когда используется с = и == операторы. Символьные операнды могут также использоваться с операторами отношения, пока сравнение выполняется с цифрами '0' к '9'.

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

Группа: стандартные преобразования
Категория: необходимый, автоматизированный
Введенный в R2019a