>637がベストだ。気がつかなかった。
あと、(a^b)をunsignedにキャストしないと、
結果がうまく0or1にならないかもしれないね(処理系依存)。
0と比較するなら構わないけど。

個人的には、普通に(無理に)ifや?:を使うより、
(a < 0) != (b < 0)
の方がよっぽど見やすいと思う。