0

「2 つの整数を交換して (これに算術演算子やブール演算子を使用することは許可されていません)、結果を返す関数を作成する」ように依頼されました。残念ながら、ちょっとした問題が発生しました。提案されたXORアルゴリズムを使用して整数を交換できたと思いますが、値を返す方法がわかりません。私はプログラミングがかなり下手ですが、これについて十分に説明できていることを願っています。

これまでのコードは次のとおりです。

static void Main(string[] args)
{
    //numberSwap?(int number1, int number2)
}

public int numberSwap(int number1, int number2)
{
    number1 ^= number2;
    number2 ^= number1;//I think this is correct
    number1 ^= number2;

    int result = number1, number2;
    return result;// I think I may have this wrong
}

上記のように、呼び出された関数と同様に、結果の代入と戻りが間違っている可能性があると思います。

4

1 に答える 1

2

パラメータを渡したために番号がスワップされなかった理由は、パラメータby valueを渡すことになっていたby reference


パラメーターの受け渡しBy Value: パラメーターに送信される変数のコピーを作成します。
パラメータを渡すBy Referenceと、渡されたパラメータが変更され、変数のコピーは作成されません。


あなたの関数ロジックは正しいtinyですAs Reference

public void numberSwap(ref int number1, ref int number2)
{
    number1 ^= number2;
    number2 ^= number1;
    number1 ^= number2;
}

関数の呼び出しは次のようにする必要があります。

static void Main(string[] args)
{
    int n1 = 5, n2 = 10;
    numberSwap(ref n1, ref n2)
}
于 2013-02-04T19:07:12.247 に答える