Would question 4 have a different answer if it was:
unsigned int i = 16;
return (((((i >= i) << i) >> i) <= i));
? (I changed `int` to `unsigned int`.)