> > 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 ��.n��������+%������w��{.n�����{�����ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f