[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