This simple loop construct is confusing me. I'm not seeing why the output is what it is. When I look at the code it seems like this should print one set of statements with x going from 0 to 4. Like this

x =1

-array[0] =1

-arrary[1] = 2

...and so on. why is this not the case?

Code:

#include <stdio.h>
int main(void)
{
int array[5];
int i;
int x=0;
while(++x < 5) {
printf("*** x = %d\n",x);
for (i = 0; i < 5; i++) {
array[i] = x;
printf("\t - array[%d] = %d\n", i, array[i]);
}
printf("*** \n");
}
return 0;
}

OUTPUT

Code:

*** x = 1
- array[0] = 1
- array[1] = 1
- array[2] = 1
- array[3] = 1
- array[4] = 1
***
*** x = 2
- array[0] = 2
- array[1] = 2
- array[2] = 2
- array[3] = 2
- array[4] = 2
***
*** x = 3
- array[0] = 3
- array[1] = 3
- array[2] = 3
- array[3] = 3
- array[4] = 3
***
*** x = 4
- array[0] = 4
- array[1] = 4
- array[2] = 4
- array[3] = 4
- array[4] = 4
***