前缀增量运算符错误 C++

Posted

技术标签:

【中文标题】前缀增量运算符错误 C++【英文标题】:Prefix increment operator error C++ 【发布时间】:2016-02-11 00:46:58 【问题描述】:

我猜这与优先级有关,但为什么这是合法的

vector<string>::iterator iter = vec.begin();
iter++->empty();

但这不是。

vector<string>::iterator iter = vec.begin();
++iter->empty();

有人能解释一下这里发生的事件链吗?

【问题讨论】:

【参考方案1】:

箭头运算符的优先级高于增量,因此++iter-&gt;empty() 被解析为++(iter-&gt;empty()),而不是(++iter)-&gt;empty()。后增量版本有效,因为只有一种方法可以解析 iter++-&gt;empty()

【讨论】:

以上是关于前缀增量运算符错误 C++的主要内容,如果未能解决你的问题,请参考以下文章

前缀/后缀增量运算符

短路评估顺序和前缀增量运算符

将值传递给函数时,GCC前缀增量运算符行为不端[重复]

增量运算符 ++i 不会在 python 中导致错误 [重复]

使用增量和减量运算符进行加法和减法。 C++

C# 增量运算符 (++) 问题:为啥我得到错误的输出?