安培和方括号优先

Ampersand and square brackets priority

本文关键字:方括号      更新时间:2023-10-16

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

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

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

为了清楚起见。并不是每个人都记住了所有的操作员经验。

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

  • 程序员不确定运算符的优先级和代码的防御性
  • 让每一位读者(可能没有记住先例)都清楚地知道发生了什么

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

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

在最近的一个问题中,有人不得不解密像--p---> x < 0这样的代码。就像您的代码一样,根据C++解析规则,该代码是明确的。

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

这是一件好事™

因为他们发现它更清晰?尤其是像这样的东西:

int *a[];

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