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

후위 증가 먼저 실행 않지만 후위 증가 반환 값 포인터의 원래 값이다. 그것이 작동하는 이유입니다.

+0

이것은'* (result ++) = * (first ++);로 쉽게 확인하실 수 있습니다. –

+0

Ahhh. 고맙습니다. – sje397

+0

예. 우선 순위와 평가 결과를 혼동하지 마십시오. –