James [on his mailserver] wrote: > why doesn't this work: > > { > int c; > > for (c=0; c==9; c++) > /* something */ > } > > i tried it once and it didn't work as expected (i can't remember what > happened, it either looped for ever, or just skipped it). It will never execute the body of the loop. for (c=0; c==9; c++) <something> is (sort of) equivalent to c=0; while (c==9) { <something> c++; } except that the former will always execute the `c++', even if `continue' is executed. > and, is this a Bad Thing... > > { > for (int c=0; c<10; c++) > /* stuff */ > } No. This is the usual way to write `FOR i = 0 TO 9' type loops. > And here's something that my C Programming tutor does: > > main () > { > /* whatever */ > exit (0); > } > > shouldn't it really be > > int main () > { > /* things */ > exit (0); > > return (0); > } It should be int main(void) { /* things */ return 0; } Using exit() from within main() is redundant. And even if you use exit(), you should still have a `return' statement. The compiler can't necessarily know that exit() will cause a non-local exit. > to conform to the ANSI C standard? doing gcc -Wall picks this up (type of > main defaults to int) and i know this is just not done: > > void main (void) > { > /* things */ > exit (0); > } Allowing main() to return void is a gcc extension. > someone recommend a good C reference book (reference, not tutorial...) The C Programming Language (2nd Edition) Brian W Kernighan & Dennis M Ritchie Prentice Hall Note that this doesn't cover style. You can't really have a `reference' book for style. -- Glynn Clements <[EMAIL PROTECTED]>