Namespaces
Variants

if statement

From cppreference.net

Условно выполняет код.

Используется там, где код должен выполняться только при выполнении некоторого условия.

Содержание

Синтаксис

attr-spec-seq  (необязательно) if ( expression ) statement-true (1)
attr-spec-seq  (необязательно) if ( expression ) statement-true else statement-false (2)
attr-spec-seq - (C23) необязательный список атрибутов , применяемых к оператору if
expression - выражение любого скалярного типа
statement-true - любой оператор (часто составной оператор), который выполняется, если expression не равно 0
statement-false - любой оператор (часто составной оператор), который выполняется, если expression равно 0

Объяснение

expression должно быть выражением любого скалярного типа .

Если expression сравнивается как неравное целочисленному нулю, statement-true выполняется.

В форме (2) , если expression равно целочисленному нулю, statement-false выполняется.

Как и все другие операторы выбора и итерации, вся конструкция if-оператора имеет свою собственную область видимости блока:

enum {a, b};
int different(void)
{
    if (sizeof(enum {b, a}) != sizeof(int))
        return a; // a == 1
    return b; // b == 0 in C89, b == 1 in C99
}
(since C99)

Примечания

Ключевое слово else всегда связывается с ближайшим предшествующим if (другими словами, если statement-true также является оператором if , то этот внутренний оператор if также должен содержать часть else ):

int j = 1;
if (i > 1)
    if(j > 2)
        printf("%d > 1 and %d > 2\n", i, j);
    else // этот else относится к if (j > 2), а не к if (i > 1)
        printf("%d > 1 and %d <= 2\n", i, j);

Если statement-true выполняется через goto , statement-false не выполняется.

Ключевые слова

if , else

Пример

#include <stdio.h>
int main(void)
{
    int i = 2;
    if (i > 2)
    {
        printf("i > 2 is true\n");
    }
    else
    {
        printf("i > 2 is false\n");
    }
    i = 3;
    if (i == 3)
        printf("i == 3\n");
    if (i != 3)
        printf("i != 3 is true\n");
    else
        printf("i != 3 is false\n");
}

Вывод:

i > 2 is false
i == 3
i != 3 is false

Ссылки

  • Стандарт C23 (ISO/IEC 9899:2024):
  • 6.8.5.2 Оператор if (стр: 154)
  • Стандарт C17 (ISO/IEC 9899:2018):
  • 6.8.4.1 Оператор if (стр: 108-109)
  • Стандарт C11 (ISO/IEC 9899:2011):
  • 6.8.4.1 Оператор if (стр: 148-149)
  • Стандарт C99 (ISO/IEC 9899:1999):
  • 6.8.4.1 Оператор if (стр: 133-134)
  • Стандарт C89/C90 (ISO/IEC 9899:1990):
  • 3.6.4.1 Оператор if

Смотрите также

Документация C++ для if statement