A do while loop runs the body once before checking the condition.

do while `do { ... } while (condition);` checks after the first run.
at least once The body executes even when the condition starts false.

Do While Loop

value
do_while_loop.c
Replay: real traced execution (multi-file project)
#include <stdio.h>

int main(void) {
    int value = 1;
    int visits = 0;

    do {
        visits++;
        value--;
    } while (value > 0);

    printf("visits=%d\n", visits);
    return 0;
}
#include <stdio.h>

int main(void) {
    int value = 0;
    int visits = 0;

    do {
        visits++;
        value--;
    } while (value > 0);

    printf("visits=%d\n", visits);
    return 0;
}
#include <stdio.h>

int main(void) {
    int value = 3;
    int visits = 0;

    do {
        visits++;
        value--;
    } while (value > 0);

    printf("visits=%d\n", visits);
    return 0;
}
  1. value ← 1, visits ← 0

    3int main(void) {4    int value→ 1 = 1; //@value=0, 35    int visits→ 0 = 0;
  2. visits ← 1, value ← 0

    7do {8    visits→ 1++;9    value→ 0--;10} while (value > 0);
  3. printf("visits=%d ", visits);

    12    printf("visits=%d\n", visits1);13    return 0;14}
    outputvisits=1
  1. value ← 0, visits ← 0

    3int main(void) {4    int value→ 0 = 0;5    int visits→ 0 = 0;
  2. visits ← 1, value ← -1

    7do {8    visits→ 1++;9    value→ -1--;10} while (value > 0);
  3. printf("visits=%d ", visits);

    12    printf("visits=%d\n", visits1);13    return 0;14}
    outputvisits=1
  1. value ← 3, visits ← 0

    3int main(void) {4    int value→ 3 = 3;5    int visits→ 0 = 0;
  2. visits ← 1, value ← 2

    pass 1 of 3
    7do {8    visits→ 1++;9    value→ 2--;10} while (value > 0);
    All 3 passes — pass 1 is the card above
    passvisitsvalue
    10 13 2
    21 22 1
    32 31 0
  3. printf("visits=%d ", visits);

    12    printf("visits=%d\n", visits3);13    return 0;14}
    outputvisits=3