On 30 May 2014 14:03, Julius Schmidt wrote: > Comparing an int to a u16int causes the int to be cast to unsigned int, > instead of the u16int being promoted to int and then compared (as I would > argue the C89 standard specifies). Ken's compiler implements the original unsigned-preserving rule instead of ANSI's later invention. That has the advantage of the type not being dependent on the underlying storage size, but as you say the disadvantage of not using the so-called value-preserving rule. I suppose if I add some code that detects where it made a difference it might not cause too much trouble to change from the simple rule. I imagine p9p has already found most cases anyway. Otherwise, it's another more subtler nsec!