首页 > 解决方案 > ++structure.field 中的运算符层次结构

问题描述

这个例子:

++structure.field;

递增field而不是给出“错误的类型参数来递增”编译器错误,尽管 ++ 和 . 运算符是同样分层的ergo:应该从左到右执行。

我在这里错过了什么吗?

标签: cincrementoperator-precedenceassociativity

解决方案


前缀和后缀++具有不同的优先级。.具有比前缀增量运算符更高的优先级,如cppreference.com所示。

来自 cppreference.com 的运算符优先级和关联性表的摘录

.后缀增量具有相同的优先级。如果您写了structure.field++,那么它们将具有相同的优先级,并且关联性将开始解决歧义,(structure.field)++而不是structure.(field++).


推荐阅读