7

I would like someone to explain the difference between a while and a do while in C++

I just started learning C++ and with this code I seem to get the same output:

int number =0;

while (number<10)
{
cout << number << endl;
number++
}

and this code:

int number=0;

do
{
cout << number << endl;
number++
} while (number<10);

The output is both the same in these both calculations. So there seem to be no difference. I tried to look for other examples but they looked way to difficult to understand since it contained mathemetical stuff and other things which I haven't quite learned yet. Also my book gives a sort of psychedelic answer to my question.

Is there an easier example to show the difference between these 2 loops?

I was quite curious

Kahn Kah
  • 1,389
  • 7
  • 24
  • 49

4 Answers4

11

The while loop first evaluates number < 10 and then executes the body, until number < 10 is false.

The do-while loop, executes the body, and then evaluates number < 10, until number < 10 is false.

For example, this prints nothing:

int i = 11;

while( i < 10 )
{
    std::cout << i << std::endl;
    i++;
}

But this prints 11:

int j = 11;

do
{
    std::cout << j << std::endl;
    j++;
}
while( j < 10 );
tillaert
  • 1,797
  • 12
  • 20
10

The while loop is an entry control loop, i.e. it first checks the condition in the while(condition){ ...body... } and then executes the body of the loop and keep looping and repeating the procedure until the condition is false.

The do while loop is an exit control loop, i.e. it checks the condition in the do{...body...}while(condition) after the body of the loop has been executed (the body in the do while loop will always be executed at least once) and then loops through the body again until the condition is found to be false.

Hope this helps :)

For Example: In case of while loop nothing gets printed in this situation as 1 is not less than 1, condition fails and loop exits

int n=1;
while(n<1)
    cout << "This does not get printed" << endl;

Whereas in case of do while the statement gets printed as it doesn't know anything about the condition right now until it executes the body atleast once and then it stop because condition fails.

int n=1;
do
   cout << "This one gets printed" << endl;
while(n<1);
ahjashish
  • 573
  • 1
  • 3
  • 13
  • 1
    thank you very much, i think i'm understanding it right now, another example is needed without calculations i think to really see the difference, thanks! – Kahn Kah Aug 10 '14 at 21:32
2

If you consider using a different starting value you can more clearly see the difference:

int number = 10;

while (number<10)
{
    cout << number << endl;
    number++
}
// no output

In the first example the condition immeditately fails, so the loop won't execute. However, because the condition isn't tested until after the loop code in the 2nd example, you'll get a single iteration.

int number = 10;

do
{
    cout << number << endl;
    number++
}
while (number<10);
// output: 10
splrs
  • 2,424
  • 2
  • 19
  • 29
0

The while loop will only execute of the conditions are met. Whereas the do while loop will execute the first time without verifying the conditions, not until after initial execution.

John Seed
  • 357
  • 1
  • 7
  • 18