Spec-Zone.ru › C

Оператор if

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

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

Синтаксис

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

Объяснение

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

Если выражение не равно целому нулю, выполняется оператор-истина.

В форме (2), если выражение равно целому нулю, выполняется оператор_ложь.

Как и все другие операторы выбора и итерации, весь оператор 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
}
(с C99)

Примечания

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

int j = 1;
if (i > 1)
   if(j > 2)
       printf("%d > 1 and %d > 2\n", i, j);
    else // this else is part of if(j>2), not part of if(i>1) 
       printf("%d > 1 and %d <= 2\n", i, j);

Если оператор-истина введён с помощью оператора goto, то оператор-ложь не выполняется.

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

if, else

Пример

#include <stdio.h>
 
int main(void)
{
    int i = 2;
    if (i > 2) {
        printf("first is true\n");
    } else {
        printf("first 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");
}

Вывод:

first is false
i == 3
i != 3 is false

Справочная информация

  • Стандарт 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 оператора

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/language/if

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API