Вы могли бы использовать тест знака знака, но помимо предоставления предположений о целочисленном размере, вам все еще нужно проверить на ноль.
Вместо этого я предлагаю следующее "волшебство":
if (myvalue > 0)
return 1;
else if (myvalue < 0)
return -1;
else
return 0;
Чисто, явно, переносимо и действительно очень быстро на большинстве компиляторов.Единственная правдоподобная оптимизация на уровне кода, которую я бы предложил, это сначала проверить (или потом) нулевое значение, если вы знаете, что этот случай встречается чаще.