C언어 연산자 우선순위 질문이요...

조회수 676회

int a=0,b=0; a+++b; printf("%d %d", a,b);

다음 코드를 실행하면, 연산자 우선순위와 결합방향을 고려했을때 a+++b 가 a+(++b) 가 되서, 0 1 이 출력되어야 하는게 아닌가요??

왜 1 0이 출력되는걸까요...???

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    아래의 링크에서 C언어 연산자 우선순위를 확인해 보시면 Suffix increment가 Prefix increment보다 우선 순위가 높습니다. 즉, a+++b는 a+(++b)이 아니고 (a++)+b으로 처리됩니다.

    https://en.cppreference.com/w/c/language/operator_precedence

    a+++b와 같이 다른 사람이 한번에 이해할 수 없는 직관적이지 않은 코드는 유지 보수의 관점에서 나쁜 코드에 해당합니다. 이런 경우라면 괄호를 꼭 사용해서 작성자의 의도를 정확히 기록하는 것이 좋습니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

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

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)