if (!(x/2-1)) { ...
EDIT: Oops, confused the original with x==2 || x==3. Instead, we can use !(x-1>>1), which precedence rules parse as !((x-1)>>1).this statement is equivalent to x==2 | x==3.
For example, x=3, 3/2 = 1 then 1-1 = 0 so that !(0) is 1 or true. Also for x=1, 1/2 = 0 then 0-1 = -1 and !(-1) = 0 or false.
I agree with your point in general though about size constraints.
if(x-1<2&&x)...
if((1<<x)&6)...
if(x<3&x)...
if(3%x&&x<3)...
if(!((x-1)*(x-2)))
if(!(x^1|x^2))...
if(!(x*x-3*x+2))Are you sure they still can't do it?