0

我被要求“编写一个交换两个整数的函数(我不允许为此使用算术或布尔运算符)并返回结果”不幸的是我遇到了一个小问题。我想我已经设法使用建议的 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 回答