이 가능한 중복은 :
Undefined Behavior and Sequence Points는 X = (X는 ++)
나는 다음과 같은 코드를 작성하고 [놀랍게도]는 인쇄 : XX : 1 ZZ : 0
나는 xx와 zz가 모두 0으로 인쇄되기를 기대했을 것입니다. 이것은 linux와 darwin에서 gcc 4.2, 4.4 및 4.7로 시도되었습니다. 몇 가지 연구에서 x = x ++는 정의되지 않은 동작이지만 (x ++)가 먼저 실행되고 0을 반환합니다. 누군가가이 이상한 컴파일러 동작에 불을 붙일 수 있습니까?
#include <iostream>
using namespace std;
int frwd(int aa) { return aa; }
int main() {
int xx = 0;
xx = (xx++);
cout << "xx:" << xx << endl;
int zz = 0;
zz = frwd(zz++);
cout << "zz:" << zz << endl;
}
완전한 설명 : [정의되지 않은 동작 및 순서 포인트] (http://stackoverflow.com/questions/4176328/undefined-behavior-and-sequence-points) –