hel*_*hod 1 c bit-manipulation
如果有一个返回负数,0或正数的函数.我想要的是在正数的情况下返回-1,在0的情况下返回0,在正数的情况下返回+1.
我可以使用某种小小的方式来实现这样的事情,还是我必须进行普通的比较?
您可以使用符号位测试,但除了对整数大小进行假设之外,您仍需要测试零.
相反,我建议以下"魔术":
if (myvalue > 0)
return 1;
else if (myvalue < 0)
return -1;
else
return 0;
Run Code Online (Sandbox Code Playgroud)
干净,明确,便携,而且在大多数编译器上确实非常快.我建议的唯一合理的代码级优化是首先(或第二)测试零值,如果你知道这种情况更频繁.