我想编写一个函数,在调用时将其参数加倍(如果它非零)或返回一个特定常量(如果它为零)。如果有帮助的话,常数始终是 2 的幂。
假设常量是 8。当用 0 调用时,我希望它返回 8。当用 8 调用时,我希望它返回 16。依此类推。
简单的方法是这样的:
unsigned foo(unsigned value)
{
return (value ? value * 2 : 8);
}
是否可以在不分支的情况下完成此操作?
最佳答案
这不会导致额外的内存访问。
int f(int a)
{
const int c = 8;
return (a*2)+(a==0)*c;
}
关于c - C 中不带分支的 double 或集合整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33032678/