[Info-vax] decrementing & for loops in C
vaxinf at chemie.uni-konstanz.de
vaxinf at chemie.uni-konstanz.de
Thu Jan 8 08:27:20 EST 2009
OK!
This works and is a better style than i !=0:
for (i = n; i >= 0; i--) {
Eberhard
Bob Eager schrieb:
> 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