책 내용 질문하기
575, 578쪽 질문
도서
2020 시나공 정보처리기사 필기 : NCS 기반 전면 개편 [기본서]
페이지
575,578
조회수
402
작성일
2020-07-31
작성자
탈퇴*원
첨부파일

안녕하세요

질문1. 575쪽 맨아래 예

switch (2)

{case 3: printf("1");

 case 2: printf("2");

 case 1: printf("3");

}

결과가 23인 이유가 이해되지 않습니다

스위치가 2라서 케이스 2에 있는 2랑 break가 없어서 다음 케이스 1에 있는 3까지 

그러니까 밑줄 표시한 2랑 3이 합쳐져서 23인건가요?

 

578쪽 2번 문제도 break문이 없어서 case문 전체가 실행되기 때문에

가장 마지막 실행문에 의해 z가 저장된다고 나와서 575쪽 예시와 2번 문제가 같은 개념인거 같은데 이해가 되지 않네요

자세한 설명 부탁드립니다

 

질문2. 578쪽 4번 문제에서

만약에 if (a = 200)에서 대입연산자 = 자리에 관계연산자 ==를 사용하면

int a = 100;

if (a == 200) 

 a = 300;

else 

 a = 400;

 

100 == 200 이 거짓이 되기 때문에 400 으로 출력되는건가요? 

답변
2020-07-31 11:03:30

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

 

switch 문에 대해서는 정확하게 이해하신 것 같은데 어느 부분에서 혼동하셨는지를 잘 파악하지 못했습니다.

578쪽의 2번 문제의 경우와 같이 575쪽의 [예] 또한 case 2부터 모두 출력합니다.

printf("2")  -  화면 : 2

printf("3")  -  화면 : 23    // 2는 앞의 printf문에서 출력된 것입니다.

이로 인해 결과가 '23'이 나오는 것입니다.

 

578쪽의 4번 문제의 경우 말씀하신 것이 맞습니다.

a의 값 100과 200은 같지(==) 않으므로 else로 넘어가서 a=400을 수행하게 되죠.

다음 if문이 종료하고, 출력문(printf문)을 만나 a의 값을 출력하게 되면 400이 나오는 것입니다.

 

행복한 하루되세요 :)

  • 관리자
    2020-07-31 11:03:30

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

     

    switch 문에 대해서는 정확하게 이해하신 것 같은데 어느 부분에서 혼동하셨는지를 잘 파악하지 못했습니다.

    578쪽의 2번 문제의 경우와 같이 575쪽의 [예] 또한 case 2부터 모두 출력합니다.

    printf("2")  -  화면 : 2

    printf("3")  -  화면 : 23    // 2는 앞의 printf문에서 출력된 것입니다.

    이로 인해 결과가 '23'이 나오는 것입니다.

     

    578쪽의 4번 문제의 경우 말씀하신 것이 맞습니다.

    a의 값 100과 200은 같지(==) 않으므로 else로 넘어가서 a=400을 수행하게 되죠.

    다음 if문이 종료하고, 출력문(printf문)을 만나 a의 값을 출력하게 되면 400이 나오는 것입니다.

     

    행복한 하루되세요 :)

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