Оператор 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, то оператор-ложь не выполняется.
Ключевые слова
Пример
#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