char[] a = { 'o', 'r', 'a', 'n', 'g', 'e' };
for (int i = 0; i < a.Length/2; i++)
{
a[i] = (char)(((uint)a[i])|((uint)a[a.Length-(i+1)]));
a[a.Length-(i+1)] = (char)(((uint)a[i])^((uint)a[a.Length-(i+1)]));
a[i] = (char)(((uint)a[i])^((uint)a[a.Length-(i+1)]));
}
Run Code Online (Sandbox Code Playgroud)
我知道如何使用标准的.NET功能和临时变量来实现它.我只是很好奇我在上面的例子中做错了什么导致它在以下工作正常时不起作用:
int a = 5;
int b = 10;
a = a | b;
b = a ^ b;
a = a ^ b;
Run Code Online (Sandbox Code Playgroud)
上面的字符串版本只是一系列的吗?
呵呵,没有OR/XOR/XOR交换的东西 - 它应该是一个"三倍xor"交换.
int a = 8, b = 10;
a ^= b;
b ^= a;
a ^= b;
Run Code Online (Sandbox Code Playgroud)
我不明白你为什么要使用它(除了新奇的价值)