Условные операторы в C: IF, IF-ELSE и вложенные IF-ELSE подробно разобраны
Что такое условный оператор в C?
Условные операторы в C используются для принятия решений на основе условий. Условные операторы выполняются последовательно, когда нет условий вокруг операторов. Если вы ставите условие для блока операторов, поток выполнения может измениться в зависимости от результата, вычисленного условием. Этот процесс называется принятием решений в «C».
В программировании на «C» условные операторы возможны с помощью двух конструкций:
1. Оператор if
2. Оператор if-else
Это также называется ветвлением, так как программа решает, какой оператор выполнить, основываясь на результате вычисленного условия.
В этом уроке вы узнаете:
- Что такое условный оператор?
- Оператор if
- Операторы отношения
- Оператор if-else
- Условные выражения
- Вложенные операторы if-else
- Вложенные операторы else-if
Оператор if
Это один из мощных условных операторов. Оператор if отвечает за изменение потока выполнения программы. Оператор if всегда используется с условием. Условие вычисляется первым перед выполнением любого оператора внутри тела if. Синтаксис оператора if выглядит так:
if (condition) instruction;
Условие вычисляется как true (истина) или false (ложь). True — всегда ненулевое значение, false — значение, содержащее ноль. Инструкция может быть одной инструкцией или блоком кода, заключенным в фигурные скобки { }.
Следующая программа иллюстрирует использование конструкции if в программировании на «C»:
#include<stdio.h> int main() { int num1=1; int num2=2; if(num1<num2) //тест-условие { printf("num1 is smaller than num2"); } return 0; }
Вывод:
num1 is smaller than num2
Приведенная выше программа иллюстрирует использование конструкции if для проверки равенства двух чисел.

- В приведенной выше программе мы инициализировали две переменные num1, num2 со значениями 1, 2 соответственно.
- Затем мы использовали if с тестовым выражением для проверки, какое число меньше, а какое больше. Мы использовали выражение отношения в конструкции if. Поскольку значение num1 меньше num2, условие вычислится как true.
- Таким образом, будет напечатан оператор внутри блока if. После этого управление выйдет за пределы блока и программа завершится с успешным результатом.
Операторы отношения
В C есть шесть операторов отношения, которые можно использовать для формулирования булева выражения для принятия решения и проверки условий, возвращающих true или false:
< меньше
<= меньше или равно
> больше
>= больше или равно
== равно
!= не равно
Обратите внимание, что проверка на равенство (==) отличается от оператора присваивания (=), потому что это одна из самых частых проблем, с которыми сталкивается программист, перепутывая их.
Например:
int x = 41; x =x+ 1; if (x == 42) { printf("You succeed!");}
Вывод :
You succeed
Имейте в виду, что условие, вычисляющееся в ненулевое значение, считается true.
Например:
int present = 1; if (present) printf("There is someone present in the classroom \n");
Вывод :
There is someone present in the classroom
Оператор if-else

Оператор if-else является расширенной версией if. Общая форма if-else выглядит так:
if (test-expression) { True block of statements } Else { False block of statements } Statements;
В этом типе конструкции, если значение test-expression истинно, то будет выполнен true блок операторов. Если значение test-expression ложно, то будет выполнен false блок операторов. В любом случае после выполнения управление автоматически передается к операторам, появляющимся вне блока if.
Следующие программы иллюстрируют использование конструкции if-else:
Мы инициализируем переменную некоторым значением и напишем программу для определения, меньше ли значение десяти или больше десяти.
Начнем.
#include<stdio.h> int main() { int num=19; if(num<10) { printf("The value is less than 10"); } else { printf("The value is greater than 10"); } return 0; }
Вывод:
The value is greater than 10

- Мы инициализировали переменную со значением 19. Нам нужно выяснить, больше или меньше число десяти, используя программу на «C». Для этого мы использовали конструкцию if-else.
- Здесь мы предоставили условие num<10, потому что должны сравнить наше значение с 10.
- Как видите, первый блок всегда является true блоком, что означает: если значение test-expression истинно, то первый блок, который является if, будет выполнен.
- Второй блок — это else блок. Этот блок содержит операторы, которые будут выполнены, если значение test-expression станет false. В нашей программе значение num больше десяти, поэтому test-condition становится false и выполняется else блок. Таким образом, наш вывод будет из else блока — «The value is greater than 10». После if-else программа завершится с успешным результатом.
В программировании на «C» мы можем использовать несколько конструкций if-else внутри друг друга, которые называются вложенностью if-else операторов.
Условные выражения
Существует еще один способ выразить оператор if-else — введя оператор ?:. В условном выражении оператор ?: имеет только один оператор, связанный с if и else.
Например:
#include <stdio.h> int main() { int y; int x = 2; y = (x >= 6) ? 6 : x;/* Это эквивалентно: if (x >= 5) y = 5; else y = x; */ printf("y =%d ",y); return 0;}
Вывод :
y =2
Вложенные операторы if-else
Когда требуется серия решений, используются вложенные if-else. Вложенность означает использование одной конструкции if-else внутри другой.
Напишем программу для иллюстрации использования вложенных if-else.
#include<stdio.h> int main() { int num=1; if(num<10) { if(num==1) { printf("The value is:%d\n",num); } else { printf("The value is greater than 1"); } } else { printf("The value is greater than 10"); } return 0; }
Вывод:
The value is:1
Приведенная выше программа проверяет, меньше или больше число 10 и печатает результат, используя вложенную конструкцию if-else.

- Во-первых, мы объявили переменную num со значением 1. Затем мы использовали конструкцию if-else.
- Во внешнем if-else условие проверяет, меньше ли число 10. Если условие истинно, тогда и только тогда будет выполнен внутренний блок. В этом случае условие истинно, поэтому внутренний блок обрабатывается.
- Во внутреннем блоке у нас снова есть условие, проверяющее, содержит ли наша переменная значение 1 или нет. Когда условие истинно, тогда будет обработан if блок, иначе — else блок. В этом случае условие истинно, поэтому if блок выполняется и значение выводится на экран.
- Приведенная выше программа напечатает значение переменной и выйдет с успехом.
Попробуйте изменить значение переменной и посмотрите, как ведет себя программа.
ПРИМЕЧАНИЕ: В вложенных if-else нужно быть внимательным с отступами, потому что задействовано несколько конструкций if-else, поэтому становится трудно выделить отдельные конструкции. Правильные отступы облегчают чтение программы.
Вложенные операторы else-if
Вложенные else-if используются, когда требуются решения с множественными путями.
Общий синтаксис того, как конструкции else-if строятся в программировании на «C», выглядит так:
if (test - expression 1) { statement1; } else if (test - expression 2) { Statement2; } else if (test - expression 3) { Statement3; } else if (test - expression n) { Statement n; } else { default; } Statement x;
Этот тип структуры известен как лесенка else-if. Эта цепочка обычно выглядит как лестница, поэтому ее также называют лесенкой else-if. Тестовые выражения вычисляются сверху вниз. Всякий раз, когда находится истинный test-expression, выполняется связанный с ним оператор. Когда все n test-expressions становятся false, выполняется дефолтный else оператор.
Посмотрим на реальную работу с помощью программы.
#include<stdio.h> int main() { int marks=83; if(marks>75){ printf("First class"); } else if(marks>65){ printf("Second class"); } else if(marks>55){ printf("Third class"); } else{ printf("Fourth class"); } return 0; }
Вывод:
First class
Приведенная выше программа печатает оценку в зависимости от набранных баллов на тесте. Мы использовали конструкцию лесенки else-if в приведенной выше программе.

- Мы инициализировали переменную с оценками. В структуре лесенки else-if мы предоставили различные условия.
- Значение из переменной marks будет сравнено с первым условием, так как оно истинно, связанный с ним оператор будет напечатан на экране вывода.
- Если первый тестовый условий окажется false, тогда оно сравнивается со вторым условием.
- Этот процесс продолжится, пока все выражения не будут вычислены, иначе управление выйдет из лесенки else-if, и будет напечатан дефолтный оператор.
Попробуйте изменить значение и обратите внимание на изменение в выводе.
Резюме
- Операторы принятия решений или ветвления используются для выбора одного пути на основе результата вычисленного выражения.
- Это также называется операторами управления, потому что они контролируют поток выполнения программы.
- «C» предоставляет конструкции if, if-else для операторов принятия решений.
- Мы также можем вкладывать if-else друг в друга, когда нужно проверить несколько путей.
- Лесенка else-if используется, когда нужно проверять различные варианты на основе результата выражения.
Язык C
- Выражения, операторы и блоки в C#: подробное руководство с примерами
- Условная логика в C#: if, if-else, if-else-if и вложенные if
- Освоение условных операторов C++: if, if...else и вложенные if...else
- Условные операторы в C: if, else и не только — подробное руководство
- Освоение Java if…else: управление потоком выполнения
- Операторы в C++: типы, примеры и практические программы
- Оператор switch-case в C++: синтаксис, применение и практические примеры
- Структуры (struct) в C++: объяснение с практическим примером
- Освоение std::list в C++: синтаксис, функции и практические примеры
- C++ Struct vs Class: ключевые отличия, синтаксис и лучшие сценарии использования