最佳答案
C + + 中的括号在很多地方都有使用: 例如在函数调用和分组表达式中,用来覆盖运算符优先级。除了不合法的额外括号(例如围绕函数调用参数列表) ,C + + 的一个通用但非绝对规则是 多加个括号总没坏处:
5.1主要表达式[ expr.prim ]
5.1.1一般[ expr.prim.General ]
6括号内的表达式是主表达式,其类型和 值与所包含的表达式的值相同 不影响表达式是否为左值。 括号中的表达式可以在完全相同的上下文中使用 与可以使用所附表达式的表达式相同 意思是 除非另有说明。
问题 : 在哪些上下文中,除了覆盖基本操作符优先级之外,额外的括号改变了 C + + 程序的含义?
注意 : 我认为将 指向成员的指针语法限制为不带括号的 &qualified-id
超出了范围,因为它是 < strong > 限制语法 ,而不是允许两种语法具有不同的含义。类似地,使用 预处理宏定义中的圆括号还可以防止不需要的操作符优先级。