43
При выполнении оператора if сначала вычисляется логическое выражение.
При результате ИСТИНА (любое отличное от нуля значение) выполняется опе-
ратор A, в противном случае (результат логического выражения ЛОЖЬ (равен
0)) выполняется оператор B. Если ключевое слово else отсутствует, а результат
логического выражения ЛОЖЬ, то в этом случае оператор A пропускается, а
управление передается на следующий
после if оператор. Если в какой-либо вет-
ви требуется выполнить несколько операторов, их необходимо заключать в
блок. Блок может содержать любые операторы, в том числе и другие условные
операторы, образуя так называемые вложенные if [1].
Примеры:
if (a<0) b=1; //1
if (a<0 &&(a > d || a = = 0)) b++; else {b*=a;a=0;} //2
if (a<b) { if (a<c) m=a; else m=c;} else { if (b<c) m=b; else m=c;} //3
if (a++) b++; //4
if (b>a) max = b; else max = a; //5
В
примере 1 отсутствует ветвь else. В примере 2 показано, что при необхо-
димости проверки нескольких условий их объединяют знаками логических опе-
раций. Оператор в примере 3 вычисляет наименьшее значение из трех перемен-
ных. В примере 4 показано, что в логическом выражении могут использоваться
не только операции отношения, а в примере 5 показано, как с помощью опера-
тора if можно найти максимальное из двух заданных чисел. При использовании
вложенных циклов может возникнуть неоднозначность в понимании того, к ка-
кой из вложенных конструкций if относится элемент else. Например, в конст-
рукции
if (условие 1)
if (условие 2)
оператор 1;
else оператор 2;
элемент else будет отнесен компилятором ко второй конструкции if , т.е. опера-
тор 2 будет выполняться в случае, если первое условие истинно, а второе лож-
но. Иначе говоря, конструкция будет прочитана как
if (условие 1)
{
if(условие 2) оператор 1;
else оператор 2;
}
Если же необходимо отнести else к первому оператору if, то с помощью
соответствующих установок фигурных скобок фрагмент программы запишется
в виде
if (условие 1)
{
if(условие 2) оператор 1;
}
else оператор 2;