C언어 전위, 후위연산 (++x, y--) 질문

조회수 59회
#include <stdio.h>
int main()

{
    int x = 0, y = 0;

    int result;

    result = -++x + y--;

    printf("%d\n", result);

}

여기서 -++x++x1이되고 앞에 -가 붙어서 -1이 되는건 알겠는데. 뒤에 y--는 어떻게 해야되나요?

C언어 배운지 얼마 안되서 전위, 후위연산자가 좀 헷갈리네요.

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    전위 연산자와 후위 연사자는 단독으로만 쓰일 때에는 그냥 피연산자의 같을 1 증가, 또는 감소시킵니다.

    ++a;
    

    위 문장의 결과와 아래 문장의 결과는 같습니다.

    a++;
    

    그러나 다른 연산자들과 함께 사용될 때에, 전위 연산자와 후위 연산자는 평가되는 시점이 다릅니다. 전위 연산자는 전위 연산자가 포함된 문장이 평가되기 전에 실행되고, 후위 연산자는 후위 연산자가 포함된 문장이 평가된 후에 실행됩니다.

    예를 들어,

    c=++a;
    

    위의 코드는 아래 코드와 같습니다.

    ++a;    // a가 우선 1증가
    c=a;    // 증가된 a가 c에 대입되었다.
    

    반면에 아래의 코드는,

    c=a++
    

    아래의 코드와 같습니다.

    c=a;    // a값을 c에 대입
    a++;    // 그 후에 a만 증가되었다.
    

    result = -++x + y--;
    

    결국 질문에 있는 위 코드는 아래 코드와 같습니다.

    ++x;            // x는 1이 됨.
    result=-x+y;    // result=-1+0;이므로 -1
    y--;            // y는 -1이 됨.
    

    전치연산, 후치연산을 다른 연산자와 혼용해서 사용하는 것은 디버깅과 테스팅, 유지보수 등을 어렵게 만들기 때문에, 전문가의 영역(라이브러리 최적화나 임베디드 시스템의 한정된 자원을 이용하는 경우 등)을 제외하고는 다른 문장과 함께 사용하지 않는 것이 좋습니다. 즉

    y=++x;
    

    위의 문장보다는 아래의 문장이 일반적인 경우에는 더 바람직합니다.

    ++x;
    y=x;
    
    • 친절한 답변 감사합니다. 많은 도움이 된거같아요. kevin 2021.10.12 16:40

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.