![]() |
loop problem
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 . . . |
Re: loop problem
On Oct 20, 6:34*pm, Leigh Johnston <le...@i42.co.uk> wrote:
> On 20/10/2011 16:18, fattaneh wrote: > > > > > > > > > > > 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 . . . > > 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 :) |
Re: loop problem
On 20.10.2011 17:18, fattaneh wrote:
> 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 |
| All times are GMT. The time now is 02:39 AM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.