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