我想写一个函数,当被调用时,它的参数加倍(如果它不为零)或返回一个特定的常量(如果它为零)。如果有帮助,常数总是2的幂。
让我们说常量为8.当用0调用时,我希望它返回8.当用8调用时,我希望它返回16.依此类推。
琐碎的方法就像:
unsigned foo(unsigned value)
{
return (value ? value * 2 : 8);
}
是否可以在没有分支的情况下执行此操作?
答案 0 :(得分:4)
这不会导致额外的内存访问。
int f(int a)
{
const int c = 8;
return (a*2)+(a==0)*c;
}
答案 1 :(得分:3)
static int myconst[2] = { 8, 0 };
int f(int x)
{
return x + x + myconst[!!x];
}