直观原因> =优先于|

时间:2012-10-11 21:50:45

标签: c++ c

>=和'>'的直观原因是什么?优先级高于|Reference。 我可以理解为什么||较低,因为写a>b||c很常见。但是我认为a>b|c会在比较之前进行OR。这似乎不直观。 &^|优先级低于比较/权益运算符的示例是什么?

1 个答案:

答案 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保留了这样表示的按位运算符的优先级。