1

数値 X を取得する関数を作成したいのですが、 X=5 の場合は 7 を返し、 X=7 の場合は 5 を返し、それ以外の場合は何かを返します。簡単な方法があります - 「if」ブロックを使用する 別の方法 - マップを使用する (5 を 7 にマッピング、7 を 5 にマッピング) 3 番目の方法 - 一致する線形数式を書く ​​しかし、私は 4 番目の方法を探していますそれを行います(再び-「if」ブロックをまったく使用せずに)。

ビット操作が必要な気がしますが、私はこの分野で支配的ではないので、助けが必要です。

何か案は?

ありがとう!

4

4 に答える 4

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

明らかなビット単位の XOR ソリューションと同様に、ブール式が 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 に答える