&符号和方括号优先

时间:2012-08-23 14:53:03

标签: c++ c operators operator-precedence

我看到很多程序员在表达式周围使用括号,例如:

&(tab[i]) /* I use `&tab[i]`. */

我认为没有必要,因为[]运算符的优先级高于&运算符。那么,为什么他们使用括号?

5 个答案:

答案 0 :(得分:10)

为了清楚起见。并非每个人都记住了所有的运算符优先级。

答案 1 :(得分:3)

我认为基本上有两个原因:

  • 程序员不确定操作员优先级和防守代码
  • 为每个读者(可能没有记忆的优先权)清楚地说明发生了什么

答案 2 :(得分:2)

确实没有必要,因为后缀运算符的优先级始终高于一元运算符。

&(tab[i])中使用parens的人使用它们的原因与他们在表达式(8 * 5) / 2中使用它们的原因相同。

答案 3 :(得分:2)

在最近的一个问题中,有人必须像--p---> x < 0那样使用decypher代码。就像您的代码一样,该代码根据C ++解析规则是明确的。

然而,人类并不总是记住所有这些复杂的规则,因此许多程序员习惯于在其他人(或他们自己)看起来并不完全清楚的情况下使用parens。它记录了代码的真实意图。

这是一件好事(The Thing To Do™)

答案 4 :(得分:1)

因为他们觉得更清楚了吗?特别是对于这样的事情:

int *a[];

这是指向int数组的指针还是指向int的指针数组?