책 내용 질문하기
2020 정보처리기사 실기 후치연산 관련
도서
2020 시나공 정보처리기사 실기 [기본서]
페이지
67
조회수
193
작성일
2020-06-29
작성자
이*우
첨부파일

안녕하세요 저번 답변에서 

먼저 알아두실 것은 C언어에서는

1. 전치 후치 연산을 할 때, 해당 식에 사용되는 모든 전치연산자가 식 수행 전에 전부 연산되고, 해당 식이 종료된 이후 모든 후치연산자가 연산됩니다.

2. 전치/후치 연산자가 하나의 '식'을 기준으로 식 앞/뒤에서 계산이 이루어진다는 것을 기억하세요.

라고 답변을 받았습니다.

 

그리고 저에게는 p 66에서 다시 한번 의문점이 발생했습니다.

 

시나공 유튜브로 400631, 교재 p66 표로 2번째에 있는

int a, hap = 0;

for (a = 0; a < 5; a++, hap += a);

라는 코드 부분에서 인강을 들어보니

후치 연산 a++ 뒤 hap += a에서 처음에 a를 초기값 0이 아닌 1로 연산한다고 말씀하셨습니다.

 

그 이유는

순서연산자 , 이므로 a++과 hap += a가 각각 다른 식으로 간주하기때문에 각자 연산된건가요?

 

[추가 질의 내용]

p 66 표 세번째에 있는

int a =1, hap = 0;

     for(; a <= 5; a++)

          hap += a;

에서 유튜브 인강으로는 처음에 a는 1로, hap은 0으로 처음 연산을 수행하셨는데

여기서 후치연산 a++로 인해 처음에 a가 2로 연산되지 않는 이유가 무엇일까요

저는 for(; a <= 5; a++)과 hap +=a는 각각 다른 식으로 간주되어 hap +=a에서 a는 2로 연산되어야 한다고 생각했습니다.

하지만 위의 for이하 코드는 같은 하나의 식인가요?

 

답변
2020-06-30 10:23:40

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

 

예, 정확합니다.

 

해당 for문의 경우 수행순서가

a=0, a<5, 실행할 문장X, a++, hap +=a, a<5, 실행할 문장X, a++, hap +=a, a<5, .... 이렇게 되죠.

 

콤마(,)는 두 개 이상의 식을 연속으로 나열할 때 사용하는 연산자로 순서 연산자라고 부릅니다.

앞의 식이 종료된 후 다음 식을 수행하는 방식이죠.

 

[추가 질의]

for문의 식 수행 순서를 기억하세요. (66쪽 [for문의 동작 과정] 참고)

for문의 3개의 식은 서로 별개의 식입니다. (세미콜론(;)으로 구분되는 3개의 식이 포함된 조건문)

때문에 for문을 지나간다고 해도 해당 식을 수행하지 않으면 연산자는 실행되지 않습니다.

초기값 -> 조건식 -> 실행할 문장 -> 증가값  의 순서로 진행되는데, 해당 for문에서는 초기값이 존재하지 않으므로,

 

초기값x -> a<=5 -> hap+=a -> a++ -> a<=5 -> ... 이런 순서로 진행됩니다.

 

처음 hap+=a를 수행할 때에는 증가식(a++)이 수행된적이 없으므로  a가 증가해 있을 이유가 없게 되죠.

 

행복한 하루되세요 :)

  • 관리자
    2020-06-30 10:23:40

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

     

    예, 정확합니다.

     

    해당 for문의 경우 수행순서가

    a=0, a<5, 실행할 문장X, a++, hap +=a, a<5, 실행할 문장X, a++, hap +=a, a<5, .... 이렇게 되죠.

     

    콤마(,)는 두 개 이상의 식을 연속으로 나열할 때 사용하는 연산자로 순서 연산자라고 부릅니다.

    앞의 식이 종료된 후 다음 식을 수행하는 방식이죠.

     

    [추가 질의]

    for문의 식 수행 순서를 기억하세요. (66쪽 [for문의 동작 과정] 참고)

    for문의 3개의 식은 서로 별개의 식입니다. (세미콜론(;)으로 구분되는 3개의 식이 포함된 조건문)

    때문에 for문을 지나간다고 해도 해당 식을 수행하지 않으면 연산자는 실행되지 않습니다.

    초기값 -> 조건식 -> 실행할 문장 -> 증가값  의 순서로 진행되는데, 해당 for문에서는 초기값이 존재하지 않으므로,

     

    초기값x -> a<=5 -> hap+=a -> a++ -> a<=5 -> ... 이런 순서로 진행됩니다.

     

    처음 hap+=a를 수행할 때에는 증가식(a++)이 수행된적이 없으므로  a가 증가해 있을 이유가 없게 되죠.

     

    행복한 하루되세요 :)

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