Приведем снова текст программы.
#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
Комментарии.
y = 1; if (y!=0) x = 5; На первом шаге вычисляются условия. (y!=0) (1!=0) Так как условие - "истина", то выполняется x = 5; первая часть условного оператора.
y = 1; if (y==0) x = 3; else x = 5; Вычисляем условие. (y==0) (1==0) x = 5; Выполняем else-часть условного оператора.
y = 1; if (y<0) Условие первого условного оператора "ложь", if (y>0) так что часть оператора, соответствующая x = 3; истинному значению условия, пропускается. else x = 5; Выполняется оператор, следующий за else. (y<0) (1<0) x = 5;
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; "ложь", поэтому выполняется вторая часть второго условного оператора.
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;
y = 1; if (x=z=y); if (x=z=y) x = 3; {;} x = 3; Первая часть условного оператора есть пус- той оператор. (x=(z=y)) Вычисляем условие. (x=(z=1)) Условие - "истина",поэтому выполняется пер- (x=1) вая часть оператора, но поскольку там пус- той оператор, то выполняется оператор, сле- x = 3; дующий за условным.