[Info-vax] decrementing & for loops in C

Bob Eager rde42 at spamcop.net
Thu Jan 8 08:17:47 EST 2009


On Thu, 8 Jan 2009 13:03:32 UTC, vaxinf at chemie.uni-konstanz.de wrote:

> int main (void) {
> 
> int i,sum=0,n=10;
> 
>     (void)printf ("Starting countdown loop...\n");
>     (void)fflush (stdout);
>     for (i = n; i = 0; i--) {
>         (void)printf (" i: %i\n",i);
>     }
>     (void)printf ("done.\n");
> 
>     (void)printf ("Starting normal loop...\n");
>     (void)fflush (stdout);
>     for (i = 1; i <= n; i++) {
>         (void)printf (" i: %i\n",i);
>     }
>     (void)printf ("done.\n");
> }
> 
> Here is the output:
> 
> r SYSWRITE_TST
> Starting countdown loop...
> done.
> Starting normal loop...
>  i: 1
>  i: 2
>  i: 3
>  i: 4
>  i: 5
>  i: 6
>  i: 7
>  i: 8
>  i: 9
>  i: 10
> done.
> 
> So the countdown loop is ignored. g++ under linux behaves the same.

There's a logical error in the code. The second part of if() is the 
condition to be fulfilled to keep the loop going (see the normal loop, 
where it's going to keep going as long as i is less than or equal to n).

So it says:

 for (i = n; i = 0; i--) {

(i.e. "keep going as long as i is zero", which it obviously isn't)

It should be:

 for (i = n; i != 0; i--) {

(i.e. "keep going as long as i is not zero")
-- 
Bob Eager




More information about the Info-vax mailing list