2016-10-29 3 views
-2

나는 다음과 같은 코드를 시도하고있다 : 나는"c - = - c - C++;"의 결과 여야합니다. C 언어로?

#include <stdio.h> 

int main() 
{ 
    int c =0; 
    c -= --c - c++; 
    printf("%d \n",c); 
    return 0; 
} 

를 컴파일 할 때와 온라인의 C 컴파일러 (https://www.tutorialspoint.com/compile_c_online.php) 결과가 -1을 사용하여 실행합니다. 하지만 그것은 그래서 0 을 것으로 예상, 나는 내 로컬 데브 C++ (Windows)에서 그것을 시도하고 그 결과는 0

  1. 결과가 0이어야한다인가?
  2. 그렇다면 왜 2 gcc 컴파일러 (다른 plataform에도 괜찮은지)를 사용하면 2 가지 결과를 얻을 수 있습니까?

나는 다른 결과를 낼 수있는 일종의 자동 플래그 otimization를 찾고 있었지만 성공하지 못했습니다.

+0

정의되지 않은 동작입니다. –

+0

""c - = - c - C++; "의 결과는 무엇입니까?" 당신의 동료들이 큰 클럽에서 당신을 때리고. –

+2

마치 여러 개의 증분 연산자에 대해 같은 질문에 대한 끝없는 분출을 분출하는 분수대가있는 것 같습니다 –

답변

4

이것은 정의되지 않은 동작입니다 (동일한 변수에 시퀀스 포인트가없는 3 가지 수정)