While loops
While loops are similar to for loops, but have less functionality. A while loop continues executing the while block as long as the condition in the while remains true. For example, the following code will execute exactly ten times:
int n = 0;
while (n < 10) {
n++;
}
While loops can also execute infinitely if a condition is given which always evaluates as true (non-zero):
while (1) {
/* do something */
}
Loop directives
There are two important loop directives that are used in conjunction with all loop types in C - the break
and continue
directives.
The break
directive halts a loop after ten loops, even though the while loop never finishes:
int n = 0;
while (1) {
n++;
if (n == 10) {
break;
}
}
In the following code, the continue
directive causes the printf
command to be skipped, so that only even numbers are printed out:
int n = 0;
while (n < 10) {
n++;
/* check that n is odd */
if (n % 2 == 1) {
/* go back to the start of the while block */
continue;
}
/* we reach this code only if n is even */
printf("The number %d is even.\n", n);
}
Exercise
The array
variable consists of a sequence of ten numbers. Inside the while loop, you must write two if
conditions,
which change the flow of the loop in the following manner (without changing the printf
command):
- If the current number which is about to printed is less than 5, don't print it.
- If the current number which is about to printed is greater than 10, don't print it and stop the loop.
Notice that if you do not advance the iterator variable i
and use the continue
derivative, you will get stuck in an infinite loop.