loop problem

F

fattaneh

hi all ,
i have written this code , and it should be in while if num is not
zero
so it shouldn't print error , but num becomes zero and it wont come
out of while
i have written this code in visual studio c++

#include "stdafx.h"
#include <stdio.h>
using namespace System;

int main(array<System::String ^> ^args)
{
int num =5 ;
while (num !=0)
{
num-- ;
if(num ==0)
{
printf("error") ; // it should never write this but it
will write .
}
}
return 0;
}


could you help me to filnd out what the problem is ?

thanks of all . . .
 
F

fattaneh

The while condition is only tested once at the start of each iteration
of the loop; it is not tested after every statement inside the loop.

/Leigh

Thank you :)
 
M

Markus Wichmann

hi all ,
i have written this code , and it should be in while if num is not
zero
so it shouldn't print error , but num becomes zero and it wont come
out of while
i have written this code in visual studio c++

#include "stdafx.h"
Doesn't look much like standard...
#include <stdio.h>
using namespace System;

int main(array<System::String ^> ^args)
^^^^^^^^^^^^^^^^^^^^^^^^^
Definitely _not_ standard. The standard is one of:

int main()
int main(int argc, char* argv[])

or equivalent. (There are two other forms for argv that mean exactly the
same.)
{
int num =5 ;
while (num !=0)
{
num-- ;
if(num ==0)
{
printf("error") ; // it should never write this but it
will write .
}
}
return 0;
}


could you help me to filnd out what the problem is ?

thanks of all . . .

Short: Move the decrement instruction to the other side of the loop!

Long: The condition of a while-loop is checked only on entry and on
repeat, not after every instruction inside the loop. Thus, if num is 1
at the beginning of the loop, it is decremented to 0, then the if fires.

HTH,
Markus
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,774
Messages
2,569,599
Members
45,175
Latest member
Vinay Kumar_ Nevatia
Top