2017-04-23 14 views
0

다음 프로그램은 단순한 증가 및 감소 작업을 포함합니다. 내 예측대로 프로그램은 "0 1 1 1"을 인쇄해야하지만 대신 "1 0 2 0"을 인쇄하지만 그 이유는 무엇입니까?증분 및 감소를 수행하는 동안 "cout"체이닝이 예기치 않은 결과를 생성합니다.

#include<iostream> 
using namespace std; 
int main(void) 
{ 
    int i=0; 
    cout<<i++<<" "<<i++<<" "<<--i<<" "<<i++;//this will print "1 0 2 0" 
} 

...하지만 내가 좋아하는 체인을 출력 명령을하지 않으면 잘 작동,

cout<<i++<<endl; 
cout<<i++<<endl; 
cout<<--i<<endl; 
cout<<i++<<endl; 

가 같은 방식으로 작동해야하지만 서로 다른 결과를 생산하는 경우에도 마찬가지입니다. 하지만 왜?

enter code here 

답변

0

후 당신은 당신이 당신이 선이 출마하기 전에 내가에서 차감 --i 않았을 때 라인이 너무 exectued되기 전에 추가 ++ 내가 실행할 때 내가 그것을 줄 뒤에 실행 ++ 사용 사전 증가 i ++ 통화.

그들 모두를 i ++ 및 i - or - i 및 ++로 만들려고합니다. 결과가 동일하지 않은 경우 결과가 다를 수 있습니다.