c++ - iter++->empty() 是一个合法的表达式吗?

标签 c++ post-increment

iter++->empty() 是合法的表达式吗?

iterstringvectoriterator

我问是因为考虑到运算符的优先级 ->() 应该在后缀增量之前,但我真的不知道操作数应该如何分组。

在我的编译器上它可以工作(表达式为第一个字符串产生 empty() 结果并且 iter 指向第二个字符串)但我仍然想知道是否这是未定义的行为。

编辑

我刚刚找到了解决方案(我认为):

iter++->empty() 应与 (*i​​ter++).empty()

相同

因此考虑到关联性和优先级规则,分组应该是:

(((*(iter++)).empty) ())

对吗?

最佳答案

这是合法的,但不要这样做。

问自己这个问题足以将其分解为两个陈述:

iter->empty();
iter++;

关于c++ - iter++->empty() 是一个合法的表达式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19765623/

相关文章:

c - Postfix++ 运算符在 While 条件下未按预期运行

java - 在 Java 中使用 int a=a+1 和 a++ 的性能差异

c++ cout like c printf 收藏

c++ - UVC 相机 "Still Pin"在 Linux C++ 中捕获

Python 在函数调用中添加增量变量

c - 这个涉及后增量运算符的表达式是如何求值的?

c++ - 如果条件为 TRUE,则在 do while 循环中发布增量(最好的方法?)

c++ - 类中的 std::vectors

c++ - 一个端口 c++ 如何连接到互联网?

c++ - 将鼠标事件连接到 wxStaticBitmap (wx 2.8)