На ключевое слово 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выполняется до тех пор, пока < условное-выражение > не станет ложным. Если оно изначально ложно, то тело цикла не будет выполнено ни разу. < Начальное-выражение > и < выражение-приращения > обычно используются для инициализации и модификации параметров цикла или других значений.
Первым шагом при выполнении оператора цикла 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не станет больше или равно МАХ.
Оператор цикла с предусловием while
Синтаксис:
while (< выражение >) < оператор >
Действие:
Тело оператора цикла whileвыполняется до тех пор, пока значение < выражения > не станет ложным (т.е. равным нулю). Вначале вычисляется < выражение >. Если < выражение > изначально ложно, то тело оператора whileвообще не выполняется и управление сразу передается на следующий за телом цикла оператор программы. Если < выражение > истинно, то выполняется тело цикла. Перед каждым следующим выполнением тела цикла < выражение > вычисляется заново. Этот процесс повторяется до тех пор, пока < выражение > не станет ложкам. Оператор цикла whileможет также завершиться при выполнении операторов break, goto, returnвнутри своего тела.
Пример:
while (i >= 0) {
slring1[i] = string2[i];
i--;
}
В вышеприведенном примере элементы массива string2копируются в массив string1. Если iбольше или равно нулю, то производится копирование (путем присваивания) очередного элемента, после чего iдекрементируется. Когда iстановится меньше нуля, выполнение оператора whileзавершается.
Читать дальше