4

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

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

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

4

5 回答 5

12

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

于 2012-08-23T14:55:22.900 回答
4

我想说,主要有两个原因:

  • 程序员不确定运算符优先级和防御性代码
  • 让每个读者(可能没有记住优先顺序)绝对清楚发生了什么
于 2012-08-23T14:56:51.070 回答
2

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

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

于 2012-08-23T14:56:30.840 回答
2

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

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

这是一件好事™</p>

于 2012-08-23T14:57:46.427 回答
1

因为他们发现它更清楚?特别是对于这样的事情:

int *a[];

那是指向整数数组的指针还是指向整数的指针数组?

于 2012-08-23T14:56:09.860 回答