MISRA C++:2008 Rule 4-5-3

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

Описание

Определение правила

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

Объяснение

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

Дополнительное сообщение в отчете

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

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

Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».

Примеры

расширить все

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'.

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

Группа: Стандартные Преобразования
Категория: Требуемая
Введенный в R2013b