iter++->empty()
是合法的表达式吗?
iter
是 string
的 vector
的 iterator
。
我问是因为考虑到运算符的优先级 ->
和 ()
应该在后缀增量之前,但我真的不知道操作数应该如何分组。
在我的编译器上它可以工作(表达式为第一个字符串产生 empty()
结果并且 iter
指向第二个字符串)但我仍然想知道是否这是未定义的行为。
编辑
我刚刚找到了解决方案(我认为):
iter++->empty()
应与 (*iter++).empty()
因此考虑到关联性和优先级规则,分组应该是:
(((*(iter++)).empty) ())
对吗?
最佳答案
这是合法的,但不要这样做。
问自己这个问题足以将其分解为两个陈述:
iter->empty();
iter++;
关于c++ - iter++->empty() 是一个合法的表达式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19765623/