2014-11-21 205 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