我被要求“编写一个交换两个整数的函数(我不允许使用算术或布尔运算符)并返回结果” 不幸的是我遇到了一个小问题。我想我已经设法使用建议的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
}
如上所述我认为我可能有结果赋值并返回错误以及被调用的函数。
答案 0 :(得分: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)
}