En una construccion de la forma
while (expresión)
proposición
proposición siguiente
primero se evalua EXPRESION; si es cero ( FALSO), el control
pasa directamente a PROPOSICION SIGUIENTE, pero si no es cero (
VERDADERO), entonces PROPOSICION se ejecuta y el
control se devuelve al principio del ciclo while. De este modo,
PROPOSICION se ejecuta varias veces hasta que EXPRESION sea
cero, en ese momento, el control pasara a PROPOSICION
SIGUIENTE. El efecto de esto es que PROPOSICION puede ejecutarse
cero, una o mas veces. Es posible que, sin advertirlo, se especifique una
expresion que nunca se convierta cero, y con esto el programa quedara
en un LOOP INFINITO a menos que se introduzcan medios para escapar
del ciclo while; para evitar tal situacion debe tenerse cuidado. Como
ejemplo, condirese el siguiente ejemplo:
int n;
printf("Ingrese un entero: ");
scanf("%d", &n);
while (--n) {
. . . . . /* hacer algo */
}
La intencion es introducir un entero positivo y asignarlo a la variable
n; luego se ejecutaran las proposiciones del ciclo while de manera
repetida, hasta que la expresion - -n sea cero. No obstante, si por
algun error se asigna a n un numero negativo, el ciclo sera
infinito. Para evitar esta posibilidad, seria mejor hacer:
while (--n > 0) {
. . . . . /* hacer algo */
}
En ocasiones, es conveniente que un ciclo while contenga solo una
proposicion vacia. Un ejemplo tipico es:
while ((c = getchar()) == ' ')
; /* proposición nula */