这有可能实现使用某种魔法吗?

hel*_*hod 1 c bit-manipulation

如果有一个返回负数,0或正数的函数.我想要的是在正数的情况下返回-1,在0的情况下返回0,在正数的情况下返回+1.

我可以使用某种小小的方式来实现这样的事情,还是我必须进行普通的比较?

mjv*_*mjv 5

您可以使用符号位测试,但除了对整数大小进行假设之外,您仍需要测试零.

相反,我建议以下"魔术":

if (myvalue > 0)
   return 1;
else if (myvalue < 0)
   return -1;
else
   return 0;
Run Code Online (Sandbox Code Playgroud)

干净,明确,便携,而且在大多数编译器上确实非常快.我建议的唯一合理的代码级优化是首先(或第二)测试零值,如果你知道这种情况更频繁.