Why does the LED turn on after the while loop becomes false?

the following output and code

      1
      2
      3
      4
      5
      6
      7
      0
      1
      2
#include <stdio.h>

int
main ()
{
    int ledMode = 0;
    for (int i = 10; i > 0; i--)  {
#if 1
        ledMode = ++ledMode % 8;
#else
        ledMode = ledMode++ % 8;
#endif
        printf (" %6d\n", ledMode);
    }
}

and this is the result doing a post increment

      0
      0
      0
      0
      0
      0
      0
      0
      0
      0

#include <stdio.h>

int
main ()
{
    int ledMode = 0;
    for (int i = 10; i > 0; i--)  {
#if 1
        ledMode = ++ledMode % 8;
#else
        ledMode = ledMode++ % 8;
#endif
        printf (" %6d\n", ledMode);
    }
}