exponenta event banner

CERT C: Rec. EXP15-C

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

Описание

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

Не помещайте точку с запятой в ту же строку, что и оператор if, for или while. [1 ]

Внедрение Polyspace

Эта проверка проверяет наличие точки с запятой в той же строке, что и инструкция, для или 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;
}

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

Группа: Rec. 03. Выражения (EXP)
Представлен в R2020a

[1] Данное программное обеспечение было создано компанией MathWorks и включает в себя следующие компоненты: «Веб-сайт SEI CERT-C», © 2017 Университет Карнеги-Меллон, веб-сайт SEI CERT-C + + © 2017 Университет Карнеги-Меллон, "Стандарт кодирования SEI CERT C - Правила разработки безопасных, Надежные и безопасные системы - 2016 Edition ", © 2016 Университет Карнеги-Меллон, и "Стандарт кодирования SEI CERT C++ - Правила разработки безопасных, Надежные и безопасные системы в C++ - 2016 Edition "© 2016 Университет Карнеги-Меллон, со специальным разрешением от его Института программного обеспечения.

ЛЮБОЙ МАТЕРИАЛ УНИВЕРСИТЕТА КАРНЕГИ МЕЛЛОНА И/ИЛИ ЕГО ПРОГРАММНОГО ИНЖЕНЕРНОГО ИНСТИТУТА, СОДЕРЖАЩИЙСЯ В НАСТОЯЩЕМ ДОКУМЕНТЕ, ПОСТАВЛЯЕТСЯ КАК ЕСТЬ. УНИВЕРСИТЕТ КАРНЕГИ МЕЛЛОН НЕ ДАЕТ НИКАКИХ ГАРАНТИЙ, ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, В ОТНОШЕНИИ ЛЮБЫХ ВОПРОСОВ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИИ ПРИГОДНОСТИ ДЛЯ ЦЕЛЕЙ ИЛИ ТОВАРНОЙ ПРИГОДНОСТИ, ИСКЛЮЧИТЕЛЬНОСТИ ИЛИ РЕЗУЛЬТАТОВ, ПОЛУЧЕННЫХ ОТ ИСПОЛЬЗОВАНИЯ УНИВЕРСИТЕТ КАРНЕГИ МЕЛЛОН НЕ ДАЕТ НИКАКИХ ГАРАНТИЙ В ОТНОШЕНИИ СВОБОДЫ ОТ ПАТЕНТА, ТОВАРНОГО ЗНАКА ИЛИ НАРУШЕНИЯ АВТОРСКИХ ПРАВ.

Данное программное обеспечение и связанная с ним документация не были рассмотрены и не одобрены Университетом Карнеги-Меллона или его Институтом разработки программного обеспечения.