Приведем снова текст программы.

   #include<iostream.h>
   main ()
   {
      int x,z;
      int y=1;
      if  (y!=0)  x = 5;
      cout<<x<<endl;          /* Управление 1 */

      if  (y==0)
         x = 3;
      else  x = 5;
      cout<<x<<endl;          /* Управление 2 */

      if  (y<0)
         if  (y>0)
           x = 3;
         else  x = 5;
      cout<<x<<endl;          /* Управление 3 */

      if  (z=y<0)
         x = 3;
      else  if  (y==0)
               x = 5;
            else  x = 7;
      cout<<x<<" "<<z<<endl;  /* Управление 4 */

      if  (z=(y==0))
         x = 5; x = 3;
      cout<<x<<" "<<z<<endl;  /* Управление 5 */

      if  (x=z=y);
         x = 3;
      cout<<x<<" "<<z<<endl;  /* Управление 6 */
   }
Текст этой программы можно взять здесь.

Результаты работы программы:

   5
   5
   5
   7 0
   3 0
   3 1

    Комментарии.


    Управление 1.
    y = 1;
    if  (y!=0)
     x = 5;          На первом шаге вычисляются условия.
   (y!=0)
   (1!=0)            Так как условие - "истина", то выполняется
   x = 5;            первая часть условного оператора.


    Управление 2.
   y = 1;
   if (y==0)
     x = 3;
   else  x = 5;      Вычисляем условие.
   (y==0)
   (1==0)
   x = 5;            Выполняем else-часть условного оператора.


    Управление 3.
   y = 1;
   if  (y<0)         Условие первого условного оператора "ложь",
     if  (y>0)       так  что  часть  оператора, соответствующая
       x = 3;        истинному  значению  условия, пропускается.
   else  x = 5;      Выполняется оператор, следующий за else.
   (y<0)
   (1<0)
   x = 5;


    Управление 4.
   y = 1;
   if  (z=y<0)       Начинаем с вычисления первого условия.  Как
      x = 3;         и прежде,  мы будем использовать скобки для
   else if  (y==0)   обозначения соответствия операций и операн-
           x = 5;    дов.
        else  x = 7;
   (z=(y<0))         Так как условие первого if - "ложь", выпол-
   (z=(1<0))         няется вторая часть этого оператора,  кото-
   (z=0)             рая опять оказывается условным  оператором;
   (y==0)            значит,  вычисляется его условие. Условие -
   x = 7;            "ложь",  поэтому выполняется  вторая  часть
                     второго условного оператора.


    Управление 5.
   y = 1;
   if  (z=(y==0))    if  (z=(y==0))
      x = 5;         {
   x = 3;               x = 5;
                     }
                     x = 3;
                     Первая часть условного оператора может быть
                     одиночным оператором или блоком  и  следует
                     сразу за условием.
   (z=(y==0))        Вычисляем условие.
   (z=0)
   x = 3;


    Управление 6.
   y = 1;
   if  (x=z=y);      if  (x=z=y)
      x = 3;         {;}
                     x = 3;
                     Первая часть условного оператора есть  пус-
                     той оператор.
   (x=(z=y))         Вычисляем условие.
   (x=(z=1))         Условие - "истина",поэтому выполняется пер-
   (x=1)             вая часть оператора,  но поскольку там пус-
                     той оператор, то выполняется оператор, сле-
   x = 3;            дующий за условным.