c++ - `copy`实现示例中的运算符优先级

标签 c++ variable-assignment increment dereference operator-precedence

我读了几行代码here在我看来应该有一些括号。

template<class InputIterator, class OutputIterator>
  OutputIterator copy ( InputIterator first, InputIterator last, OutputIterator result )
{
  while (first!=last) 
     *result++ = *first++; // <--- this line
  return result;
}

根据运算符优先级表here ,我认为后缀增量优先,然后是取消引用,然后是赋值。但在我看来,其意图是首先发生取消引用,然后是赋值,然后是后缀增量。

我读错了吗?还是表错了,还是代码片段错了?还是另有原因?

最佳答案

后缀增量确实首先执行,但是后缀增量的返回值是指针的原始值。这就是它起作用的原因。

关于c++ - `copy`实现示例中的运算符优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6846307/

相关文章:

c++ - 如何在 Windows 中使用 glib/gtkmm 打开/生成文件

c++ - '[' 之前的预期表达式

JavaScript call() 和 apply() 方法及变量赋值

Python 线程 'While' 不正常

c++ - 如果参数采用引用,在函数参数中传递 *this 会导致内存泄漏吗?

c++ - 使用 FFTW 的段错误

Swift 语法问题 : var a:Int64 = -7

java - 并发代码中赋值运算符的返回值

Python 以可能由其小数位数预先确定的最小步长递增 float

python - 如何增加变量名/这是个坏主意吗