【发布时间】:2014-07-01 07:48:39
【问题描述】:
我刚刚注意到按位运算不像逻辑“和\或”运算那样“聪明”,我想知道为什么?
这是一个例子:
// For the record
private bool getTrue(){return true;}
private bool getFalse(){return false;}
// Since a is true it wont enter getFalse.
bool a = getTrue() || getFalse();
// Since a is false it wont enter getTrue.
bool b = getFalse() && getTrue();
// Since b is false it wont enter getTrue.
b = b && getTrue();
但是位运算符“|=”和“&=”没有那么聪明:
bool a = getTrue();
a |= getFalse(); // a has no chance to get false but it still enters the function.
a = getFalse();
a &= getTrue(); // a has no chance to get true but still performs this operation.
我想知道为什么它们不能以相同的逻辑方式工作。
【问题讨论】:
标签: c# optimization operators bit-manipulation