From: | "Devon H. O'Dell " <dodell@xxxxxxxxxxxxxxx> |
Date: | Sun, 3 Apr 2005 19:13:13 +0200 |
Mail-followup-to: | users@crater.dragonflybsd.org |
On Sun, Apr 03, 2005 at 07:09:00PM +0200, Erik Wikström wrote: > > "Terry Tree" <terry.tree@xxxxxxxxx> wrote in message > news:60e7ec9505040309364929a941@xxxxxxxxxxxxxxxxx > > I'm trying to go through a book on programming in C and I'm having > > problem understanding the second example in the book. > > > > $cat 2.c > > > > #define PRINTX printf("%d\n", x); > > > > int > > main(int argc, char *argv[]) > > { > > int x = 2, y, z; > > > > x *= 3 + 2; PRINTX; > > x *= y = z = 4; PRINTX; // the output makes no sense > > x = y == z; PRINTX; > > x == (y = z); PRINTX; > > } > > > > Looking at line x *= y = z = 4; from my point of view the output > > should be 8 but it is 40. > > Allow me to post another question, I have no experience with C but the third > line looks fishy to me. Would in not be interpreted as x =(y==z), which > should be true, but x is an int. I know of inexplicit casting from int to > bool but never heard of bool to int. Am I missing something? > > -- > Erik Wikström C has no bool type. False evaluates to 0 and true evaluates to 1 is is shown from this code. I really don't like this example, though. --Devon
Attachment:
pgp00004.pgp
Description: PGP signature