zil*_*n01 3 language-design bitwise-operators operator-precedence
我在C语言中遇到过几次问题:
original | included & ~excluded // BAD
Run Code Online (Sandbox Code Playgroud)
由于优先级,这解析为:
original | (included & ~excluded) // '~excluded' has no effect
Run Code Online (Sandbox Code Playgroud)
有没有人知道按位运算符的三个独立优先级的原始设计决策背后是什么?更重要的是,你同意这个决定,为什么?
至少从C开始,运营商就具备了这一优先权.
我与顺序不一致,因为它是相同的相对顺序算术运算符,他们是最相似的(相对顺序+,*并否定).
你可以看到&vs *和|vs 的相似之处+:
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