int f (int i1, int i2, unsigned u1, unsigned u2)
{
int x = i1 & i2; /* not unsigned */
unsigned u = u1 & i2;
short s = i1 & i2; /* not unsigned */
short s2 = i1 + i2;
u = u1 | u2;
u = i1 << 3; /* left operand not unsigned */
u = u1 >> 4; /* okay */
u = u1 >> i1;
u >>= 3;
u = i1 ^ u1; /* ! unsigned */
u = u1 ^ i1; /* ! not unsigned */
return x;
}
/*
>>, >>=
<<, <<=
warn if not unsigned
&, &=
|, |=
^ (XOR), ^=
warn if not unsigned
*/