Условная конструкция if-else направляет ход программы по одному из возможных путей в зависимости от условия. Она проверяет истинность условия, и если оно истинно, выполняет блок инструкций. В простейшем виде конструкция if имеет следующую сокращенную форму:
if (условие)
В качестве условия использоваться условное выражение, которое возвращает true или false . Если условие возвращает true , то выполняются последующие инструкции, которые входят в блок if. Если условие возвращает false , то последующие инструкции не выполняются. Блок инструкций заключается в фигурные скобки. Например:
#include int main() < int a ; if(a == 8) < std::cout std::cout
Здесь условие конструкции if представляет выражение a == 8 , то есть мы сравниваем, равно ли значение переменной a числу 8. И это условие верно и возвращает true . Соответственно будет выполняться единственная инструкция из блока if, которая выведет на консоль строку «a == 8». А консольный вывод будет следующим:
15 Условный оператор if Python. Если Python
a == 8 End of program
После конструкции if могут идти остальные инструкции программы, которые выполняются вне зависимости от условия. Так, в примере выше после блока if идет инструкция, которая выводит на консоль строку «End of program» .
Теперь посмотрим на противоположную ситуацию:
#include int main() < int a ; if(a == 7) < std::cout std::cout
Здесь уже другое условие: a == 7 , то есть мы сравниваем, равно ли значение переменной a числу 7. Но переменная a НЕ равна 7, поэтому условие неверно и возвращает false . Соответственно инструкции в блоке if НЕ выполняются. А консольный вывод будет следующим:
End of program
Стоит отметить, что если блок инструкций состоит из одной инструкции, то мы можем не использовать фигурные скобки:
#include int main() < int a ; if(a == 8) // только одна инструкция std::cout
Можно вовсе поместить инструкцию на одной строке с условием:
if(a == 8) std::cout
if..else
Также мы можем использовать полную форму конструкции if, которая включает оператор else:
if(выражение_условия) < инструкция_1 >else
После оператора else мы можем определить набор инструкций, которые выполняются, если условие в операторе if возвращает false. То есть если условие истинно, выполняются инструкции после оператора if, а если это выражение ложно, то выполняются инструкции после оператора else.
#include int main() < int n ; if (n > 22) < std::cout 22″ else < std::cout << «n <= 22» >
В данном случае условие n > 22 ложно, то есть возвращает false, поэтому будет выполняться блок else . И в итоге на консоль будет выведена строка «n
if-else
Однако нередко надо обработать не два возможных альтернативных варианта, а гораздо больше. Например, в случае выше можно насчитать три условия: переменная n может быть больше 22, меньше 22 и равна 22. Для проверки альтернативных условий мы можем вводить выражения else if :
НЕЙРОСЕТЬ своими руками за 10 минут на Python
#include int main() < int n ; if (n > 22) < std::cout 22″ else if (n < 22) < std::cout << «n < 22» else < std::cout << «n == 22» >
То есть в данном случае мы получаем три ветки развития событий в программе.
Подобных альтернативных условий с помощью выражения else if можно вводить больше одного:
#include int main() < int n ; if (n == 20) < std::cout else if(n==21) < std::cout else if(n==22) < std::cout else if(n==23) < std::cout >
Если в блоке if или else или else-if необходимо выполнить только одну инструкцию, то фигурные скобки можно опустить:
#include int main() < int n ; if (n > 22) std::cout 22″
Целочисленные условия
Стоит отметить, что если вместо значений типа bool передаются целые числа, то они преобразуются к типу bool — для нулевых значений возвращается false , для ненулевых — true , например:
#include int main() < int a ; // a = true if(a) std::cout ; // b = false if(b) std::cout
Здесь переменная a равна 8 , соответственно условие if(a) будет равно true . А вот переменная b по умолчанию равна 0, поэтому условие в if(b) возвращает false .
Вложенные конструкции
Конструкции if..else могут быть вложенными. Например:
#include int main() < int a ; int b ; if(a==5) < if(b==8) < std::cout else < std::cout std::cout else < std::cout >
Здесь, если a == 5 , то выполнение переходит к вложенноей конструкции if(b==8) , которая проверяет условие b==8 и выполняет либо блок if, либо блок else.
Блок if с инициализацией переменной
Иногда в конструкции if для различных промежуточных вычислений необходимо определить переменную. Мы можем это сделать непосредственно в блоке кода. Однако начиная со стандарта C++17 язык С++ поддерживает особую форму конструкции if:
if(инициализация; условие) < // инструкции >
Подобная форма также принимает условие, только перед ним еще может идти определение и инициализация переменной. Например:
#include int main() < int a ; int b ; if(int c ; a > b) < std::cout else < std::cout std::cout std::cout #include int main() < int a ; int b ; if(int rem ; rem == 0) < std::cout else < std::cout операнд1? операнд2 : операнд3
Первый операнд представляет условие. Если это условие верно (равно true), тогда выбирается/выполняется второй операнд, который помещается после символа ? . Если условие не верно, тогда выбирается/выполняется третий операнд, который помещается после двоеточия.
Например, возьмем следующую конструкцию if-else :
#include int main() < int a ; int b ; int c<>; if(a > b) < c = a — b; >else < c = a + b; >std::cout #include int main() < int a ; int b ; int c = a > b ? a — b : a + b; std::cout #include int main() < int a ; int b ; a > b ? std::cout
Здесь тот же первый операнд-условие. Если оно верно, выполняется второй операнд — std::cout
В рамках одного тернарного оператора можно комбинировать несколько других. Например:
#include int main() < int a ; int b ; std::cout
Источник: metanit.com
Оператор if-else (C++)
Оператор if-else управляет условным ветвлением. Операторы в выполняются только в if-branch том случае, если condition вычисляется как ненулевое значение (или true ). Если значение не равно нулю condition , выполняется следующая инструкция, а оператор, следующий за необязательным else , пропускается. В противном случае следующая инструкция пропускается, а если есть else оператор , то выполняется оператор, следующий за else .
condition Выражения, которые оцениваются как ненулевое:
- true
- указатель, отличный от NULL,
- любое арифметическое значение, отличное от нуля, или
- тип класса, определяющий однозначное преобразование в арифметический, логический тип или тип указателя. (Сведения о преобразованиях см. в разделе Стандартные преобразования.)
Синтаксис
init-statement :
expression-statement
simple-declaration
condition :
expression
attribute-specifier-seq Выбрать decl-specifier-seq declarator brace-or-equal-initializer
statement :
expression-statement
compound-statement
expression-statement :
expression Выбрать ;
compound-statement :
statement-seq Выбрать >
selection-statement :
if constexpr opt 17 ( init-statement opt 17 condition ) if-branch
if constexpr opt 17 ( init-statement opt 17 condition ) if-branch else else-branch
17 Этот необязательный элемент доступен начиная с C++17.
Операторы if-else
Во всех формах if оператора condition вычисляется значение , которое может иметь любое значение, кроме структуры, включая все побочные эффекты. Элемент управления передается от if оператора к следующему оператору в программе, если не выполняется if-branch или else-branch не содержит break , continue или goto .
Предложение else оператора связано с ближайшим предыдущим if оператором if. else в том же область, который не имеет соответствующего else оператора.
Пример
В этом примере кода показано несколько if операторов, используемых как с , так и без else :
// if_else_statement.cpp #include using namespace std; class C < public: void do_something()<>>; void init(C)<> bool is_true() < return true; >int x = 10; int main() < if (is_true()) < cout else < cout // no else statement if (x == 10) < x = 0; >C* c; init(c); if (c) < c->do_something(); > else < cout >
Оператор if с инициализатором
Начиная с C++17 инструкция if может также содержать init-statement выражение, которое объявляет и инициализирует именованную переменную. Используйте эту форму оператора if, если переменная требуется только в область оператора if. Для майкрософт: эта форма доступна начиная с Visual Studio 2017 версии 15.3 и требует по крайней мере параметра компилятора /std:c++17 .
Пример
#include #include #include #include #include using namespace std; map m; mutex mx; bool shared_flag; // guarded by mx void unsafe_operation() <> int main() < if (auto it = m.find(10); it != m.end()) < cout second; return 0; > if (char buf[10]; fgets(buf, 10, stdin)) < m[0] += buf; >if (lock_guard lock(mx); shared_flag) < unsafe_operation(); shared_flag = false; >string s< «if» >; if (auto keywords = < «if», «for», «while» >; any_of(keywords.begin(), keywords.end(), [ return s == kw; >)) < cout >
Операторы if constexpr
Начиная с C++17, вы можете использовать if constexpr оператор в шаблонах функций, чтобы принимать решения о ветвлениях во время компиляции, не прибегая к нескольким перегрузкам функций. Для майкрософт: эта форма доступна начиная с Visual Studio 2017 версии 15.3 и требует по крайней мере параметра компилятора /std:c++17 .
Пример
В этом примере показано, как написать одну функцию, которая обрабатывает распаковку параметров. Перегрузка с нулевыми параметрами не требуется:
template void f(T t, Rest. r) < // handle t do_something(t); // handle r conditionally if constexpr (sizeof. (r)) < f(r. ); >else < g(r. ); >>
Источник: learn.microsoft.com
Условная конструкция if…else в C#
В программировании проверка условий неизбежна. Мы часто сталкиваемся с ситуациями, когда нам нужно проверить условия (истинны они или ложны), чтобы контролировать выполнение программы. На эти условия могут влиять ввод пользователя, время, контекст, в котором выполняется программа, и т. д.