안녕하세요
질문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 으로 출력되는건가요?
안녕하세요 길벗수험서 운영팀입니다.
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이 나오는 것입니다.
행복한 하루되세요 :)