>= 优先级高于 | 的直观原因

  • 本文关键字:直观 高于 优先级 c++ c
  • 更新时间 :
  • 英文 :


>=和'>'的优先级高于|的直观原因是什么?参考我能理解为什么||更低,因为写a>b||c很常见。然而,我认为a>b|c会在比较之前进行OR运算。这似乎并不直观。&^|的优先级低于直观的比较/权益运算符的例子有哪些?

这是一个历史事故,Dennis Ritchie在《C语言的发展》中写道:

它们的延迟引入解释了C的优先级规则的不合法性。在B中写入

if (a==b & c) ...

检查a是否等于b,c是否为非零;在这样的条件表达式中,最好&优先级低于==。在从B到C的转换中,人们希望取代&由&在该声明中;为了减少转换的痛苦,我们决定保留&运算符相对于==相同,并且仅拆分&从&。今天,似乎更可取的做法是将&和==,从而简化了一个常见的C习惯用法:要针对另一个值测试一个掩码值,必须编写

if ((a&mask) == b) ...

其中需要内括号,但很容易忘记。

所以这是因为B使用|&作为逻辑运算符,而C保留了这样表示的按位运算符的优先级。

最新更新