我在没有任何评论的情况下偶然发现了这段代码:
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
。
这是一些众所周知的模式吗?它做了什么?
答案 0 :(得分:3)
他的意思是Math.Pow(3, 5)
,但^
不是权力运算符(C#中不存在)。这是一个错误。
这是有道理的,因为在循环中他以指数方式增加delay
。所以指数上限是有道理的。
我认为这种风格很糟糕,即使它有效。循环运行的频率并不明显。他应该使用一个普通的for循环并在循环中新近计算delay
,而不是逐步沿循环运行它。