Messages in this thread | | | Subject | RE: Unsigned widening casts of binary "not" operations.. | Date | Tue, 23 Apr 2013 16:24:33 +0100 | From | "David Laight" <> |
| |
> > If the narrower type is signed it is probably even more confusing! > > The high bits will be preserved unless you are masking off bit 31. > > Yes. However, that case doesn't trigger with the normal case of small > values. So "~4" works fine with widening, in a way that "~4u" does > not.
Thinks ... converting: foo &= ~bar; to: foo = ~(~foo | bar); would generally DTRT. Whether the compiler has the relevant patterns to optimise it is another question.
David
| |