The while expression may consist of a single expression (as it is generally done in most of the programs); however, we may also use compound conditions or expressions. Multiple expressions may be connected by a comma operator or by Boolean operators. If the expressions are simply connected by comma, it is the last expression that is evaluated. The expressions preceding the last are ignored. In the following while expression the first expression, i.e., j <4 is neglected.
while( int j<= 4, 1)
Thus, the expression while (j<=4, 1) is equivalent to while(1),which is an endless loop; however, the expression while (1, j<=4) is not an endless loop, it is controlled by values of j. It is equivalent to while (j<=4). This concept is illustrated in Program. In this program, the expression while (1, j<=4) contains 1but it is not an endless loop. The termination is controlled by j<= 4. For the same reason while (j <=4, 1) is an endless loop. Program illustrates a compound expression.
Illustrates action of compound expression in a while loop
#include <stdio.h> void main() { int i=1, j=1, k =6, m, A=0, B=0; clrscr(); printf("The values of mare as below.\n"); while ( 1, j<=4) // Compound while expression, { //sub-expressions separated by comma. m= j*j; printf("%d\t" ,m); j++; } printf("\nValues of A are as follows.\n"); while( i< 3,1) { A = 2* i; printf( "%d\t", A); i++; if (i > 6) break; } printf("\n Values of Bare as below.\n"); while ( 1, k< 4) { B= 5*k; printf( "%d\t", B); k++; if (k >10) break; } if(B ==0) printf("The loop did not start\n"); }
From the output it is clear that the last expression in the while loop controls the start and end of the loop. The first loop ran for the 4 values of j and the first condition in the expression, i.e., 1 is ignored. The second loop behaved as an endless loop, it has gone beyond the condition i < 3. For the third expression, the loop did not start though 1was in the beginning of the while expression. Obviously k < 4 controlled the start and since initial value of k > 4, the while expression turned false. Also note that the given while expression also contained the expression 1. It is, however, better to relate the various sub-expressions by Boolean operators. Program provides an illustration of a compound while expression using Boolean operators.
Illustrates while loop with compound Boolean operators
#include <stdio.h> void main() { int i=1,j=0,k =0, a, b, c; clrscr(); printf("i \tj\tk\ta\tb\tc\n"); while (j< 4 && i>=1 && k<6) { a = i*i; b = j*j; c = k*k; printf("%d\t%d\t%d\t%d\t%d\t%d\n", i, j, k, a, b, c ); j++; i++; k++; } }