Простая форма оператора if
Оператор ifуправляющий оператор языка Си, реализующий ветвление алгоритма.
if (выражение)
    оператор1
Блок-схема простой формы оператора if представлена на рис. 1.
Рис. 1.  Блок-схема простой формы оператора if
Если выражение в скобках истинно, то оператор выполняется, в противном случае оператор пропускается. Оператор может быть простым или составным (блоком). Скобки вокруг выражения обязательны.
Пример 1
if  (x > largest)
   largest = x;
Пример 2
if (val < min || val > max)
  {
   printf ("Значение %d выходит за пределы.\n", val);
   printf ("Пределы %d - %d.\n",min, max);
  }
Пример 3
if (num < 0)
   num = - num;
Полная форма оператора if
if (выражение)
    оператор1
else
    оператор2
Блок-схема полной формы оператора if-else представлена на рис. 2.
Рис. 2.  Блок-схема полной формы оператора if
Если выражение в скобках истинно, то оператор1 выполняется, а оператор2 пропускается. Если выражение ложно, пропускается оператор1, а выполняется оператор2. Оператор1 и оператор2 могут быть простыми или блоками. Скобки вокруг выражения, следующего за ключевым словом if, обязательны.
Пример 4
if (quantity < 1000)
  printf ("Количество недостаточное \n");
else
  printf ("Количество достаточное \n");
Пример 5
if ( x != 0)
    y = y/x;
else
   {
    printf ("Ошибка");
    printf ("Деление на нуль\n");
    y = 0;
   }
Обычными для многих программ являются серии вложенных операторов if-else. Такая серия может быть записана "ступеньками".
Пример 6
if (hour >= 8 && hour < 17)
   rate = rate * 1.02;
else
   if (hour >= 17 && hour < 23)
      rate = rate * 1.01;
Пример 7
if (age < 13)
   printf ("ребенок");
else
   if (age < 21)
     printf ("юноша");
   else
     printf ("мужчина");
При использовании вложенных операторов if-else может возникнуть проблема связывания else. else связывается с ближайшим if.
Пример 8
if (c > ' ')
   if ( c >= '0'&& c <= '9')
      digits += 1;
   else
      count += 1;
else связывается со вторым if. Оператор, следующий за первым ключевым словом if, является оператором if-else. Переменная count является счетчиком нецифровых символов.
Пример 9
if (c > ' ')
{
if ( c >= '0' && c <= '9')
digits += 1;
}
else
count += 1;
else связывается с первым if. Оператор, следующий за первым ключевым словом if, является блоком. Переменная count является счетчиком управляющих символов.