В третьем примере показано выражение вызова функции. Если функция возвращает значение, то обычно оператор-выражение содержит операцию присваивания, чтобы запомнить значение, возвращаемое вызванной функцией. В данном примере возвращаемое значение не используется.
Синтаксис:
if(<выражение>)
<оператор1>
[else
<оператор2>]
Действие:
Тело условного оператора if выполняется в зависимости от значения <выражения>.
Сначала вычисляется <выражение>. Если значение выражения истинно (не равно нулю), то выполняется <оператор1>. Если же значение выражения ложно, то выполняется <оператор2>, непосредственно следующий за ключевым словом else.
Если значение <выражения> ложно, но конструкция else опущена, то управление передается на оператор, следующий в программе за оператором if.
Пример:
if(i > 0)
У = х/i;
else {
х = 1;
у = f(x);
}
В примере, если i больше нуля, выполняется оператор у=x/i;. Если i меньше или равно нулю, то значение i присваивается переменной х, а значение, возвращаемое функцией f(x), присваивается переменной у.
ВложенностьОператор if может быть вложен в <оператор1> или <оператор2> другого оператора if. При вложении операторов if рекомендуется для ясности группирования операторов использовать фигурные скобки, ограничивающие <оператор1> и <оператор2>.
Если же фигурные скобки отсутствуют, то компилятор ассоциирует каждое ключевое слово else с ближайшим оператором if, у которого отсутствует конструкция else.
На ключевое слово if можно поставить метку, а на ключевое слово else — нельзя (однако можно поставить метку на <оператор2>, следующий за else).
Примеры.
/* пример 1 — без скобок */
if(i > 0)
if(j > i)
x = j;
else x = i;
/* пример 2 — со скобками */
if(i > 0) {
if(j > i)
x = j;
}
else
x = i;
В первом примере ключевое слово else ассоциируется с внутренним условным оператором if. Если i меньше или равно нулю, то переменной х ничего не присваивается.
Во втором примере фигурные скобки ограничивают внутренний условный оператор if и тем самым делают конструкцию else частью внешнего условного оператора if. Если i меньше или равно нулю, то переменной х присваивается значение i.
Синтаксис:
for([<начальное-выражение>]; [<условное-выражение>]; [<выражение-приращения>])
<оператор>
Действие:
Тело оператора цикла for выполняется до тех пор, пока <условное-выражение> не станет ложным. Если оно изначально ложно, то тело цикла не будет выполнено ни разу. <Начальное-выражение> и <выражение-приращения> обычно используются для инициализации и модификации параметров цикла или других значений.
Первым шагом при выполнении оператора цикла for является вычисление начального выражения, если оно имеется. Затем вычисляется условное выражение и производится его оценка следующим образом:
1) Если условное выражение истинно (не равно нулю), то выполняется тело оператора. Затем вычисляется выражение приращения (если оно есть), и процесс повторяется.
2) Если условное выражение опущено, то его значение принимается за истину и процесс выполнения продолжается, как описано выше. В этом случае оператор цикла for представляет бесконечный цикл, который может завершиться только при выполнении в его теле операторов break, goto, return.
3) Если условное выражение ложно, то выполнение оператора for заканчивается и управление передается следующему за ним оператору в программе. Оператор for может завершиться и при выполнении операторов break, goto, return в теле оператора.
Пример:
for(i = space = tab = 0; i < MAX; i++) {
if(line[i] == '\x20')
space++;
if(line[i] =='\1'){
lab++;
line[i] = '\x20';
}
}
В приведенном примере подсчитываются символы пробела ('\x20') и горизонтальной табуляции ('\1') в массиве символов с именем line и производится замена каждого символа горизонтальной табуляции на пробел.
Сначала i, space и tab инициализируются нулевыми значениями. Затем i сравнивается с константой МАХ. Если i меньше МАХ, то выполняется тело оператора. В зависимости от значения line[i] выполняется тело одного из операторов if (или ни одного из них). Затем переменная i инкрементируется и снова сравнивается с именованной константой МАХ. Тело оператора выполняется до тех пор, пока значение i не станет больше или равно МАХ.