8

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

1
  • 3
    Hint: what would happen if you started with int number = 11? Commented Aug 10, 2014 at 21:24

4 Answers 4

11

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); 
Sign up to request clarification or add additional context in comments.

1 Comment

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!
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 ); 

1 Comment

Something else to think about; while is guaranteed at least one evaluation of the conditional, where do...while isn't (you can break or continue).
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 

Comments

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.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.