运算符优先级 - 递增与成员访问
Operator precedence - increment versus member access
考虑一下:
++iterator->some_value
访问some_value
之前迭代器会被转发吗?
根据cppreferenceincrement和member access两者的优先级相同,都是2。是上市的事吗?或者这是未定义的 - 特定于编译器?
成员访问 运算符->
比前缀增量运算符具有更高的优先级。因此表达式 ++iterator->some_value
被分组,就好像你写了
++(iterator->some_value)
另一方面,if 你要写表达式 iterator->some_value++
那么因为成员访问运算符 ->
和后缀增量运算符都有相同的优先级,所以将使用 left-to-right 关联性,这将使该表达式等同于写作 :
(iterator->some_value)++
请注意,preincrement 和 postincrement 具有不同的优先级,因此您发布的代码片段与您链接的解释性文本不完全匹配。
预增运算符的优先级低于成员访问运算符,因此++iterator->some_value
等同于++(iterator->some_value)
。
如果你有 iterator->some_value++
而它们具有相同的优先级,那么 left-to-right 关联性生效,它将被处理为 (iterator->some_value)++
.
考虑一下:
++iterator->some_value
访问some_value
之前迭代器会被转发吗?
根据cppreferenceincrement和member access两者的优先级相同,都是2。是上市的事吗?或者这是未定义的 - 特定于编译器?
成员访问 运算符->
比前缀增量运算符具有更高的优先级。因此表达式 ++iterator->some_value
被分组,就好像你写了
++(iterator->some_value)
另一方面,if 你要写表达式 iterator->some_value++
那么因为成员访问运算符 ->
和后缀增量运算符都有相同的优先级,所以将使用 left-to-right 关联性,这将使该表达式等同于写作 :
(iterator->some_value)++
请注意,preincrement 和 postincrement 具有不同的优先级,因此您发布的代码片段与您链接的解释性文本不完全匹配。
预增运算符的优先级低于成员访问运算符,因此++iterator->some_value
等同于++(iterator->some_value)
。
如果你有 iterator->some_value++
而它们具有相同的优先级,那么 left-to-right 关联性生效,它将被处理为 (iterator->some_value)++
.