>As per C89 in this case the unsigned char value should be >promoted to a *signed* int value. The sum will be of type >signed int and so the division will do the right thing. In >kencc case it seems the sum has type unsigned int for some >reason and further, the signed divisor (2) is promoted to an >unsigned int. Seems like a bug.
on 19 April, I wrote: >notably the compiler doesn't implement the value-preserving rules for >comparisons. ... >instead the compiler implements the older unsigned-preserving rule