2014-11-21 106 views
-3

這個表達式說的是什麼,它看起來像一些常量,那麼它應該返回相同的值嗎?這個C++代碼解釋了什麼

if (_has_bits_[8/32] & (0xffu << (8 % 32))) {...... 
+3

你到底需要什麼解釋?你明白每個符號的含義嗎?你知道數組和位運算符是如何工作的嗎?你的介紹性書籍沒有解釋這些嗎? – 2014-11-21 10:56:33

+0

表達對我說:「看着我,我被混淆了!」 – user2079303 2014-11-21 10:58:13

+0

這可能是故意的混淆,也可能是更大的代碼塊的一部分,在這些代碼中,使用操作而不是常量會使知情的讀者明顯看到模式。 – molbdnilo 2014-11-21 10:59:20

回答

0

這取決於_has_bits_數組的內容。你可以評估其餘的表達很容易:8/320所以你總是使用_has_bits_[0]的值。 8%32總是評估爲8,所以你總能得到總表達式:

_has_bits_[0] & 0xff00u