【发布时间】:2014-08-05 18:08:27
【问题描述】:
通过阅读“C++ Primer”一书和维基百科,我注意到两者都提到“优先级和关联性定义了操作员的分组”。但是,在我看来,他们给出的示例显示了操作数的分组。我在这里引用:
来自“定义术语@C++ Primer 5th edition”:
关联性:确定具有相同优先级的操作员如何 分组。
来自Operator_associativity @ Wikipedia:
考虑表达式 a ~ b ~ c。如果运算符 ~ 已经离开 结合性,这个表达式将被解释为 (a ~ b) ~ c。如果 运算符具有右结合性,表达式为 解释为 a ~ (b ~ c)。
但据我所知,上述解释将两个操作数(不是运算符)分组:a 和 b 归入 (a ~ b),或 b 和 c 归入 (b ~ c)。因为我看到他们用括号括了两个操作数,而不是两个运算符。
鉴于运算符和操作数是不同的概念,优先级和关联性规则是否对运算符或操作数进行分组?
提前致谢。
【问题讨论】:
-
这似乎是关于数学术语的问题,而不是编程问题。编程讨论将从假设您对代数概念有所了解开始。编译器编写者确实担心编写代码(基本上是解析器)来实现优先级和关联性,但您的问题似乎与此无关。
-
感谢 cmets。我在阅读 C++ 书籍时提出了这个问题。通过阅读前面的章节,我意识到 C++ 术语通常是严格定义的。所以当我遇到上述两个术语时,我习惯性地双重确认。
-
这是没有区别的区别。您不能对运算符进行分组而不对操作数进行分组,反之亦然。
-
@user3701346:啊,C++ 仔细定义了语言规则中使用的术语。这些条款不是。您的书在讨论中使用它们,如果它们与代数不同,则由书来澄清定义。
标签: c++