exponenta event banner

Точка с запятой в той же строке, как если, для или во время оператора

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

Описание

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

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

if(condition);
else {
  ...
}

Риск

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

Зафиксировать

Если вы хотите пустое тело для if, for или 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++
По умолчанию: Откл.
Синтаксис командной строки: SEMICOLON_CTRL_STMT_SAME_LINE
Воздействие: Низкий
Представлен в R2020a