• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

int c=0; 3+(c=1+2); printf("%d\n",c);

21.06.24 01:57 작성 조회수 136

0

출력값이 3이 나옵니다.

버젼마다 다른걸까요 ?

답변 1

답변을 작성해보세요.

0

안소님의 프로필

안소

2021.06.24

3 으로 나오는게 정상입니다! 

3 + (c = 1 + 2) 

이 식 자체의 결과는 6 이지만 c 의 현재 값은 무엇일까요? 3입니다.  1+2 결과를 c 에 대입했고 이 c 의 값을 빌려와 3 + 3 하게 되어 6 이라는 결과를 낳은 것인데요, 이건 저 식의 결과일 뿐이지 c 결과는 아닙니다.  c 변수의 값을 바꿔준건!!! c = 1 + 2 여기에서 밖에 없어요!

이런 상태에서 printf("%d\n",c)  이렇게 c 를 출력하셨기 때문에 3 이 나온 것입니다. c 는 3입니다.  "3 + (c = 1 + 2)" 이 전체 식의 결과가 6일 뿐입니다. printf("%d\n", 3 + (c = 1 + 2)) 로 이 식의 결과를 출력했으면 6이 나올겁니다.

감사합니다