해결된 질문
작성
·
27
0
혹시 이런경우를 말씀하신건가요??
#include <stdio.h>
int main() {
char condition;
condition = 1==2;
// 판별식 값에 따라 case 문 실행
switch (condition) {
case 1:
printf("판별식 값은 1입니다.\n");
break;
case 2:
printf("판별식 값은 2입니다.\n");
break;
case 0:
printf("판별식 값은 0입니다.\n");
break;
default:
// 이 부분은 이론적으로 도달하지 않음
printf("유효하지 않은 값입니다.\n");
break;
}
return 0;}
답변 2
1
#include <stdio.h>
int main(void) {
int condition;
// 1 == 2는 거짓이므로 condition에는 0이 할당됩니다.
condition = (1 == 2);
switch (condition) {
case 1:
printf("판별식 값은 1입니다.\n");
break;
case 2:
printf("판별식 값은 2입니다.\n");
break;
case 0:
printf("판별식 값은 0입니다.\n");
break;
default:
// 이론적으로 도달하지 않지만, 기본 case를 남겨둡니다.
printf("유효하지 않은 값입니다.\n");
break;
}
return 0;
}
일단, char 형태는 문자열이기 때문에 숫자를 넣을 수 없습니다.
그 부분을 수정하고 말씀드리자면
네 이런 케이스를 말하는 겁니다.
처음 C언어를 배우시는 분들이 if와 switch-case를 많이 헷갈려합니다.
if에서는 0을 거짓으로 처리하기 때문에 아래 블럭을 수행하지 않지만,
switch-case는 값 그 자체로 판단하기 때문에 수행이 됩니다.
그래서 위의 코드의 올바른 출력값은
판별식 값은 0입니다.
이렇게 나와야합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 정훈님.
질문해주신 switch
문과 case
문에 관련된 내용은 C 언어에서 종종 발생할 수 있는 상황입니다. 현재 주신 예제에서는 조건문의 평가 결과에 따른 분기 처리를 다루고 있습니다.
char condition;
condition = 1==2;
condition
은 char
형 변수이며 1==2
의 평가 결과로 설정되었습니다. 이는 false
에 해당하는 0으로 설정됩니다.switch (condition) {
...
}
switch
문은 condition
의 값에 따라 해당하는 case
블록을 실행합니다.case 1:
와 case 2:
: condition
이 각각 1이나 2일 때 실행될 코드 블록이지만, 현재 예제에서는 실행되지 않습니다.case 0:
: condition
이 0일 경우 실행됩니다. 그러므로 이 경우 “판별식 값은 0입니다.“가 출력됩니다.default:
: switch
문에서 명시된 모든 case
와 일치하지 않을 때 실행되지만, 이 코드에서는 조건 평가 결과가 0으로 명확하게 설정되어 default
블록은 실행되지 않습니다.질문하신 사례가 위 내용과 관련되어 있을 가능성이 큽니다. 추가적인 설명이 필요하다면, C언어의 조건문과 switch 문을 통해 변수가 가진 값에 따라 프로그램의 흐름을 제어하는 방법을 학습하는 것이 좋습니다.
아래는 관련 질문과 유사한 기존 답변 링크입니다. 참고하시면 더 많은 정보를 얻으실 수 있습니다:
- 비교연산자와 반복문+조건문 문제 풀이
- 8강 예제2 아무리 생각해도 이해가 안됩니다…
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.