1

我想编写一个获取数字 X 的函数,如果 X=5 它返回 7 ,如果 X=7 它返回 5 ,否则返回其他东西。有一种简单的方法-使用“if”块另一种方法-使用映射(5映射到7,7映射到5)第三种方法-编写匹配的线性数学方程但我正在寻找第4种方法这样做(再次 - 根本不使用“if”块)。

感觉我需要使用位操作,但我在这方面并不占主导地位,所以我需要帮助。

有任何想法吗?

谢谢!

4

4 回答 4

8
int fun(int p)
{
    return p^2;
}
于 2014-03-12T10:57:51.253 回答
5

除了明显的按位异或解决方案外,您还可以利用布尔表达式返回 1 或 0 的事实,例如

int f(int x)
{
    return (x == 5) * 7 + (x == 7) * 5;
}

还有其他简单的算术方法,例如

int f(int x)
{
    return 12 - x;
}
于 2014-03-12T11:05:41.987 回答
3

我希望这不是我为你做的功课:

int mysteriousFunction( int x ) {
    return (x ^ 2);
}
于 2014-03-12T10:57:47.710 回答
0

如果输入范围有界且很小,则将输入用作结果查找表的索引...

于 2014-03-13T16:13:13.323 回答