Здесь мы рассмотрим частный случай использования операции "запятая".
В заголовке цикла можно использовать операцию "запятая". Напомним, что операция "запятая" связывает два выражения в одно и гарантирует, что самое левое выражение будет вычисляться первым. Обычно она используется для включения дополнительной информации в заголовок цикла for. Например:
1. for (step=2,forgo=0; forgo<1000; step*=2) forgo += step; 2. for (i=1,j=1; i<10,j<10; i++,j++) z = i+j;
Однако не думайте, что приведенный в п.2. цикл является краткой записью двух вложенных циклов:
for (i=1; i<10; i++) for (j=1; j<10; j++) z = i+j;
Таким образом, в различные части оператора for можно включить несколько выражений, например, для параллельного изменения двух индексов:
for (; i==j; i++,j++)
...
Пример 1.
#include<iostream.h> main () { for (int x=1,y=1,z=1; x<101,y<101,z<101; x++,y++,z++) if (y*y+z*z==x*x) cout << "x=" << x <<" y=" << y <<" z=" << z << endl; }
При выполнении этой программы ничего не будет выведено на экран, так как переменные x, y, z одновременно будут принимать значения 1, 2, 3 и т.д.
Пример 2.
#include<iostream.h> main () { for (int x=1,y=1,z=1; x<10; x++,y++,z++) cout << "x=" << x << "y=" << y << "z=" << z << endl; }
Результаты работы программы:
x=1 y=1 z=1 x=2 y=2 z=2 x=3 y=3 z=3 x=4 y=4 z=4 x=5 y=5 z=5 x=6 y=6 z=6 x=7 y=7 z=7 x=8 y=8 z=8 x=9 y=9 z=9
Изменим текст последней программы, добавив в цикл условие y<5. Таким образом, текст программы примет следующий вид:
#include<iostream.h> main () { for (int x=1,y=1,z=1; x<10,y<5; x++,y++,z++) cout << "x=" << x << "y=" << y << "z=" << z << endl; }
Что будет выведено на экран при ее выполнении? Ниже приведены результаты работы этой программы:
x=1 y=1 z=1 x=2 y=2 z=2 x=3 y=3 z=3 x=4 y=4 z=4
Отсюда можно сделать вывод, что в данном случае операция "запятая" выполняет роль логической операции "И" (&&).
Применение операции "запятая" не ограничивается только циклами for,
но именно
в них она используется особенно часто.
Со следующего шага мы начнем разбирать операторы передачи управления.