3

我讀了幾行代碼here,它在我看來應該有一些括號。`copy`執行示例中的運算符優先級

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

根據運算符優先級表here,我會認爲後綴增量將優先考慮,然後提領,然後是分配。但它看起來像我的意圖是,解除引用首先發生,然後是賦值,然後是後綴增量。

我讀錯了嗎?或者表錯了,或者代碼片段?還是有其他的東西呢?

回答

6

後綴增量確實執行第一次,但是返回值 from後綴增量是原始值指針的值。這就是它工作的原因。

+0

這可以通過'*(result ++)= *(first ++);' –

+0

Ahhh輕鬆驗證。謝謝。 – sje397

+0

是的。不要將優先級與評估結果混淆。 –