这个xor魔法定义循环上限的重点是什么?

时间:2015-09-14 09:12:22

标签: c# .net loops xor

我在没有任何评论的情况下偶然发现了这段代码:

int delay = 5;
int maxDelay = 5 * (3 ^ 5); // << what's this xor magic?
while( Something && delay < maxDelay ) {
    Thread.Sleep( delay );
    delay *= 3;
}

3 ^ 5的重点是什么?那是&#34; 3 xor 5&#34;这是六,没有任何有趣的,可能是Int32.MaxValue的三分之一。为什么不写6呢?我想它必须做的事情是,结果然后乘以5,并且每次迭代时该值乘以3

这是一些众所周知的模式吗?它做了什么?

1 个答案:

答案 0 :(得分:3)

他的意思是Math.Pow(3, 5),但^不是权力运算符(C#中不存在)。这是一个错误。

这是有道理的,因为在循环中他以指数方式增加delay。所以指数上限是有道理的。

我认为这种风格很糟糕,即使它有效。循环运行的频率并不明显。他应该使用一个普通的for循环并在循环中新近计算delay,而不是逐步沿循环运行它。