c언어 operator 관련 질문

조회수 354회

include < stdio.h>

int main(void){

a=63, b=1, c=11, d=8, e=28;

d %= c += 5 - d--;

printf("%d %d %d %d %d", a,b,c,d,e);

return 0;}

으로 코드를 돌렸을 때 d의 값이 -1이 나오는 이유는 뭘까요?

손으로 계산할 때는 7이 나왔는데 visual studio 로 구현하면 -1이 나옵니다.

-1이 나오는 원리가 궁금합니다~

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

1 답변

  • d %= c += 5 - d--;
    

    은 아래의 두줄을 순차적으로 실행한 것과 같습니다.

    d%=(c+=5-d);
    d--;
    

    그럼 아래와 같이 풀어 가시면 됩니다. d%=(c+=5-d); 에서 d가 8이므로 d%=(c+=(-3))이 되고, c가 11 이므로 c+=(-3)에서 c는 8이 됩니다.

    따라서 위의 식은 아래와 같이 됩니다.

    d%=8;
    d--;
    

    d가 8이므로 d%=8에서 d는 0이 되고, 그 후 d--에서 최종적으로 d의 값은 -1이 됩니다.

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

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

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

(ಠ_ಠ)
(ಠ‿ಠ)