>=
和 '>' 优先级高于的直观原因是什么|
?参考。我可以理解为什么||
写作a>b||c
很普遍,为什么会更低。但是我认为a>b|c
在比较之前会做一个 OR 。这似乎并不直观。有哪些&^|
优先级较低的例子,然后比较/权益运算符是直观的?
user34537
问问题
205 次
1 回答
7
这是一个历史性的意外,丹尼斯·里奇在《C 语言的发展》中写道:
他们迟到的介绍解释了 C 的优先规则的不合理性。在 B 中写道
if (a==b & c) ...
检查 a 是否等于 b 且 c 是否非零;在这样的条件表达式中,& 的优先级低于 ==。在从 B 转换为 C 的过程中,人们想在这样的语句中用 && 替换 &;为了使转换不那么痛苦,我们决定保持 & 运算符相对于 == 的优先级相同,并且只是将 && 的优先级与 & 稍微分开。今天,似乎最好移动 & 和 == 的相对优先级,从而简化一个常见的 C 习惯用法:要测试一个掩码值与另一个值,必须编写
if ((a&mask) == b) ...
其中内括号是必需的,但很容易忘记。
所以这是因为 B 使用|
and&
用于逻辑运算符,而 C 保留了如此表示的位运算符的优先级。
于 2012-10-11T22:00:18.470 回答