Semicolon on same line as if, for or while statement

Точка с запятой на той же линии приводит к пустому телу ifдля или while оператор

Описание

Этот дефект происходит когда точка с запятой на той же линии как последняя лексема ifдля или while оператор приводит к пустому телу.

Средство проверки делает исключение для случая где if оператор сразу сопровождается else оператор:

if(condition);
else {
  ...
}

Риск

Точка с запятой после, если, для или в то время как оператор часто указывает на программную ошибку. Побочная точка с запятой изменяет поток выполнения и приводит к непреднамеренным результатам.

Фиксация

Если вы хотите пустое тело для ifдля или while оператор, перенесите точку с запятой в блок и поместите блок в новую строку, чтобы явным образом указать на ваше намерение:

if(condition)
   {;}
В противном случае удалите побочную точку с запятой.

Примеры

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

int credentialsOK(void);

void login () {
    int loggedIn = 0;
    if(credentialsOK());
      loggedIn = 1;
}

В этом примере побочная точка с запятой приводит к пустому if тело. Присвоение loggedIn=1 всегда выполняется. Однако присвоение должно было, вероятно, быть выполнено только при условии.

Коррекция – удаляет побочную точку с запятой

Если точка с запятой была непреднамеренна, удалите точку с запятой.

int credentialsOK(void);

void login () {
    int loggedIn = 0;
    if(credentialsOK())
      loggedIn = 1;
}

Информация о результате

Группа: Хорошая практика
Язык: C | C++
Значение по умолчанию: Off
Синтаксис командной строки: SEMICOLON_CTRL_STMT_SAME_LINE
Удар: низко
Введенный в R2020a