Http://www.cnblogs.com/aoaoblogs/archive/2012/05/02/2478758.html
Early C has distinguished logical operations from operators &/| and bit logical operations &/|, (Do you know ?). & And | use the "true context" (inherited from B and BCPL) to explain its meaning: If it is behind "if" and "while, because it must be a Boolean expression, both & and | are regarded as the current & and | in the explanation; in the normal expression, & and | are interpreted as bit logical operations. This method is not bad, except for some obstacles to understanding. (There was the notion of "top-level operators" in a truth-value context.
)
At that time, the priority of & and | was the same as that of the current & and |. Under the strong requirement of Alan Snyder, & | is added to C, which separates bitwise logical operators from logical operators. However, I always have a cold foot to catch up with this priority problem. For example, we will see a lot of soy sauce. Code: If (A = B & C = d )... (shake ...) now we can see that the priority of & may be increased to higher than =, but at that time, we may just make a distinction between & and, do not modify the priority of existing & operators to be more secure. (After all, we have thousands of source code .. Maybe 3 installations...