相关疑难解决方法(0)

C中整数的快速符号

C中有一个符号函数:

int sign(int x)
{
    if(x > 0) return 1;
    if(x < 0) return -1;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,比较成本非常高,所以我需要修改功能以减少比较次数.

我尝试了以下方法:

int sign(int x)
{
    int result;
    result = (-1)*(((unsigned int)x)>>31);

    if (x > 0) return 1;

    return result;
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我只得到一个比较.

有什么方法可以避免比较吗?

编辑 可能重复没有给出一个问题的答案,因为所有的答案是C++,使用比较(我应该避免的)或不返回-1,+1,0.

c

9
推荐指数
2
解决办法
2万
查看次数

标签 统计

c ×1