책 내용 질문하기
++a의 경우 출력
도서
2020 시나공 정보처리기사 필기 : NCS 기반 전면 개편 [기본서]
페이지
583
조회수
322
작성일
2020-08-06
작성자
탈퇴*원
첨부파일
이전 답변들 덕에 원 문제는 해결이 되었습니다. 예제가 다른 경우 어떤 출력이 나오는지 여쭙습니다. 문제 2번에서 예제가 printf("n=%d, t=%2d\n", n++, t)에서 ++a가 될 경우 출력은 n=1 t=0 n=2 t=1 . . . n=10 t=45 가 된다고 하셨는데요. 1화차 반복에서 ++n을 할 때 n=1이 되고 t=0+1=1이 되는건 아닌가요? 아니면 n은 출력만 n++로 1이되고 연산은 기존의 n으로 쓰는건지요? 혹 그렇다면, t+=n n=++n printf("n=%d, t=%2d\n", n, t) 일 경우 1회차 출력이 n=1, t=1로 나오는건지도 궁금합니다. 감사합니다.
답변
2020-08-06 13:11:22

안녕하세요 길벗수험서 운영팀입니다.

 

전치/후치 연산에서 전 후의 개념이 하나의 '식'에만 적용됨을 말씀드렸었습니다.

printf문은 하나의 식에 해당합니다. 

t+=n;

printf( ~ , ++n, t); 는 바꿔 보면

 

t+=n;

n=n+1;

printf(~, n, t); 가 되는 것이죠.

 

말씀하신 코드의 n= ++n의 경우 n의 값이 1 증가하는 것은 맞으나, 

n=n=n+1 같은 의미가 되어 버리므로 '++n;'만 적는 것이 적합합니다.

 

t+=n;

++n;

printf(~, n, t);

이 경우에는 이전에 답변드린 것과 같이 ++n;은 세미콜론으로 구분되는 단일 식이기 때문에 n=n+1과 동일합니다. n++;이 들어가도 동일한 결과가 나타나게 되며, 초기 출력은 n=1, t=0 ~ 마지막 출력은 n=10, t=45 가 될 것입니다.

 

행복한 하루되세요 :)

  • 관리자
    2020-08-06 13:11:22

    안녕하세요 길벗수험서 운영팀입니다.

     

    전치/후치 연산에서 전 후의 개념이 하나의 '식'에만 적용됨을 말씀드렸었습니다.

    printf문은 하나의 식에 해당합니다. 

    t+=n;

    printf( ~ , ++n, t); 는 바꿔 보면

     

    t+=n;

    n=n+1;

    printf(~, n, t); 가 되는 것이죠.

     

    말씀하신 코드의 n= ++n의 경우 n의 값이 1 증가하는 것은 맞으나, 

    n=n=n+1 같은 의미가 되어 버리므로 '++n;'만 적는 것이 적합합니다.

     

    t+=n;

    ++n;

    printf(~, n, t);

    이 경우에는 이전에 답변드린 것과 같이 ++n;은 세미콜론으로 구분되는 단일 식이기 때문에 n=n+1과 동일합니다. n++;이 들어가도 동일한 결과가 나타나게 되며, 초기 출력은 n=1, t=0 ~ 마지막 출력은 n=10, t=45 가 될 것입니다.

     

    행복한 하루되세요 :)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.