>=
和'>'的直观原因是什么?优先级高于|
? Reference。
我可以理解为什么||
较低,因为写a>b||c
很常见。但是我认为a>b|c
会在比较之前进行OR。这似乎不直观。 &^|
优先级低于比较/权益运算符的示例是什么?
答案 0 :(得分:7)
这是一次历史性事故,在The Development of the C Language中,Dennis Ritchie写道:
他们迟到的介绍解释了C的优先规则的不合理性。在B中写一个
if (a==b & c) ...
检查a等于b和c是否为非零;在这样的条件表达式中,&优先级低于==。在从B转换为C时,人们想要替换&由&&在这样的声明中;为了减少转换,我们决定保持&的优先级。运算符与==相同,只是分割&&的优先级。稍微来自&amp ;.今天,似乎更倾向于移动&的相对优先级。和==,从而简化了一个常见的C语言:要对另一个值测试一个屏蔽值,必须写一个
if ((a&mask) == b) ...
其中内括号是必需的但很容易被遗忘。
所以这是因为B使用|
和&
作为逻辑运算符,而C保留了这样表示的按位运算符的优先级。