[vox-tech] loop never exits!

Bill Broadley bill at broadley.org
Tue Apr 20 18:54:33 PDT 2010


On 04/20/2010 06:37 PM, Brian Lavender wrote:
> Our new guy (forget his name, doh!) and I figured out the problem with
> my loop that would count down, but not terminate. Turns out I was using
> an unsigned integer for my counter in my for loop and it is always
> greater than zero (Example 1).

No, it's not always greater than zero.  Your test says i>=0 so if it's 
greater than or equal to zero it continues.  Seems like you want i>0.

> Funny thing is that -Wall didn't catch this. Seems that -Wall could
> catch this assuming that we want to loop to terminate. Any thoughts?

Seems strange, but legal to do what you wanted.

> Say the compiler gave a warning, would that mess up the "for (;;)"
> construct shown in Example 2?
>
> brian
>
> // Example 1
> // Loop never terminates
> #include<stdio.h>
>
> int main() {
>    unsigned int i, num=50;
>
>
>    for (i= num ; i>= 0; i--) {
>      printf("%u\n",i);
>    }
>
>    return 0;
> }
>
> // Example 2
> // Purposely never terminates
> #include<stdio.h>
>
> int main() {
>    for (;;) {
>      printf("Hello forever\n");
>     }
>     return 0;
> }



More information about the vox-tech mailing list