>Specifically what is the problem? Given the program below, take the >ISO-C spec and explain the problem. Or even w/o the spec -- I haven't >been reading this thread.
> > int > > main() > > { > > unsigned char i = 127; > > char j; > > > > printf("%d\n", ((char)(i << 1))); This prints -2, which is correct -- (signed char)254 is -2. > > j = ((char)(i << 1)) / 2; > > printf("%d\n", j); This prints 127, which is incorrect. -2 / 2 is -1. > > j = ((char)(i << 1)); > > printf("%d\n", j / 2); This breaks down the previous expression into two halves, and results in the correct answer of -1. However, there should be no difference between ((char)(i << 1)) / 2 and char j = ((char)(i << 1); j / 2 Bill To Unsubscribe: send mail to [EMAIL PROTECTED] with "unsubscribe freebsd-current" in the body of the message