Цикл while является циклом с предусловием. В программе проверка_условия осуществляется до выполнения оператора или операторов, входящих в тело цикла. Циклы с предусловием могут либо не выполняться вообще, либо выполняться множество раз. Синтаксис:
while (проверка_условия)
оператор;
В циклах while с несколькими операторами необходимы фигурные скобки:
while (проверка_условия) {
оператор1;
оператор2;
оператор3;
операторN;}
Обычно управляющие структуры циклов while используются тогда, когда число повторений цикла — неизвестно.
Пример: цикл while используется для определения того, сколько раз переменную lvalue сдвигать вправо. Программа печатает двоичное представление целого числа со знаком.
#include <stdio.h>
#define WORD 16
#define ONE_BYTE 8
main()
{
int lvalue = 256, ibit_position=1;
unsigned int umask == 1;
/* Следующее значение ... */
printf ("The following value %d,\n", lvalue);
/* в двоичном виде выглядит так: */
printf("in binary form looks like: ");
while (ibit_position <= WORD) {
if ((ivalue >> (WORD - ibit_position)) & umask) /*сдвинуть каждый */
printf ("1"); /*разряд в 0-ю */
else /*позицию и */
printf ("0"); /*сравнить с umask*/
if(ibit_position == ONE_BYTE)
printf(" ");
ibit_position++;
}
return(0);
}
Константа WORD используется как флаг, определяющий окончание цикла while. В цикле while переменная lvalue сдвигается, сравнивается с umask, и печатается следующий старший разряд числа. Такой алгоритм позволяет использовать простой оператор printf() для вывода результата.
Пример: у пользователя запрашиваются имена входного и выходного файлов. В цикле while выполняется считывание и эхо-печать входного файла неопределенного размера.