code understanding help

Erik Wikström erik-wikstrom at telia.com
Sun Apr 3 10:09:00 PDT 2005


"Terry Tree" <terry.tree at xxxxxxxxx> wrote in message
news:60e7ec9505040309364929a941 at 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







More information about the Users mailing list