从表中了解运算符优先级

时间:2014-03-02 06:18:53

标签: c++

我正在查看以下link并说明

  

虚线之间的运算符具有相同的“优先级”   你会注意到有18个

现在我的问题是上述陈述的含义是什么。例如,如果两个运算符位于->之前的[]之前的虚线之间,则表示->的优先级高于[]

2 个答案:

答案 0 :(得分:2)

  

例如,如果两个运算符位于->之前的[]之前的虚线之间,则表示->的优先级高于[]

是的,两者都处于相同的优先级,但是因为从左到右的associativite,例如:

a->b[i];

被解析或等效为(a->b)[i];。当a是指向结构的指针并且b是struct的数组成员时,这很有用。

表达如下:

a[i]->b;  

(a[i])->b;相同。当a是结构指针数组时,这很有用。

您不需要括号。

对于*.->[]运营商,您可以阅读此答案"Pointer to structure"

答案 1 :(得分:2)

是..你是对的..还要注意,如果*/出现在表达式中,那就是考虑关联性的情况......在这种情况下你必须要评估从左到右...

a * b / c中,首先评估操作a * b,然后评估/

a / b * c中,首先评估操作a / b,然后评估*