책 내용 질문하기
문제 28번 질문입니다.
도서
2020 시나공 정보처리산업기사 실기 [기본서]
페이지
123
조회수
227
작성일
2020-07-06
작성자
탈퇴*원
첨부파일

 

 

문제 28번. 다음 C언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.

 

switch문인데, case에 해당되는게 없어 default로 왔습니다.

p=1;

for(int i=0; i<5; i++, p*=1);

 

printf("%.3f",p);

 

위와 같은 상황에서 i가 0이고 5보다 작으니까 i++한다음 p*=i을 한다고 생각하면

i++는 후치연산자니까 p*=0이라고 생각하고 하게 되면 0이랑 어떤 수를 곱해도 0이 되서

결국 답이 0된다고 생각했는데 해답을 보니 제가 생각한답이랑 완전 달랐습니다.

문제풀때 위와같은 경우와 맞닥뜨린 경우가 별로 없어 이해가 잘안됩니다.

i++는 해당 라인의 계산이 끝나야 증감되는게 아닌가요? 

++i일때와 i++일때 달라지기도 하나요? 

답변
2020-07-06 15:07:32

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

 

전치/후치 연산자는 하나의 식 내에서만 전후의 의미가 있습니다.

(라인x 식o)

 

단순히 i++;와 ++i;는 i=i+1;과 다름이 없죠. 

 

for문의 증가식에 써져있는 i++, p*=i도 마찬가지입니다.

쉼표(,)는 식을 구분하는 연산자로, i++이라는 식이 완료된 후, p*=i를 수행하게 됩니다.

즉, p*=i가 처음 수행될 때 i는 이미 증가한 값 1의 값을 갖고 있게 되는 것이죠.

 

행복한 하루되세요 :)

  • 관리자
    2020-07-06 15:07:32

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

     

    전치/후치 연산자는 하나의 식 내에서만 전후의 의미가 있습니다.

    (라인x 식o)

     

    단순히 i++;와 ++i;는 i=i+1;과 다름이 없죠. 

     

    for문의 증가식에 써져있는 i++, p*=i도 마찬가지입니다.

    쉼표(,)는 식을 구분하는 연산자로, i++이라는 식이 완료된 후, p*=i를 수행하게 됩니다.

    즉, p*=i가 처음 수행될 때 i는 이미 증가한 값 1의 값을 갖고 있게 되는 것이죠.

     

    행복한 하루되세요 :)

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