我在类 C 语言中遇到过几次的问题是:
original | included & ~excluded // BAD
由于优先级,它解析为:
original | (included & ~excluded) // '~excluded' has no effect
有谁知道三个独立优先级的原始设计决策背后是什么?bitwise运营商?更重要的是,您同意这个决定吗?为什么?
至少从那时起,运营商就拥有这种优先权C http://www.difranco.net/compsci/C_Operator_Precedence_Table.htm.
我同意这个顺序,因为它与它们最相似的算术运算符的相对顺序具有相同的相对顺序(+
, *
和否定)。
你可以看到相似之处&
vs *
, and |
vs +
here:
A B | A&B; A*B | A|B A+B
0 0 | 0 0 | 0 0
0 1 | 0 0 | 1 1
1 0 | 0 0 | 1 1
1 1 | 1 1 | 1 2
按位非和求反的相似性可以通过这个公式看出:
~A = -A - 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)