조건문은 주어진 조건을 검사하여 참이면 코드를 실행하고 거짓이면 실행하지 않는 것을 의미합니다
if문
if(조건문) {내용} *{ }는 생략 가능
int lhs = 3;
int rhs = 5;
// if(조건문) { }
if (lhs > 5) {
printf("lhs is bigger\n");
}
printf("Exit\n");
//if~else문 : if(조건문) {} else{}
if (lhs > 5) {
printf("if~else True\n");
}
else {
printf("if~else False\n");
}
//if~else if
lhs = 0;
if (lhs > 5) {
printf("lhs > 5\n");
}
else if (lhs <= 5 && lhs > 0) {
printf("lhs <=5 && lhs >0\n");
}
다음과 같이 사용 된다
else 는 if문이 실행되지 않았을 경우 실행되며
else if는 if문이 실행되지 않았을 경우 다른 조건을 탐색한다
둘다 if문이 무조건 있어야 사용이 가능하다.
SWITCH문
//switch문
rhs = 10;
int case0 = 0;
switch (rhs)
{
//case case0: -> 변수 지정 불가능, 상수여야 함
//case 0.5 -> 실수 불가능, 정수만 가능
//case 'A' -> 가능, 숫자(ASCII)니까
//case "Hello" -> 불가능
case 0:
//int case0 = 0; //switch Case 내에서 변수 선언 가능, 잠시동안 활용하고 switch~case문이 종료 되면 메모리 반환
printf("rhs is 0\n");
break;
case 3:
{
printf("rhs is 3\n");
}
break;
default:
printf("Default\n");
break;
}
//명확한 조건은 case로 분류하는 것이 가독성이 좋다.
//case 문의 가독성이 좋지 않다고 생각 된다면 옆에 주석을 달아두는 것도 괜찮다.
switch (조건)
{
case 값: ....... default:
}
case 에 붙는 값은 정수만 가능하며 문자 같은 경우 ASCII코드 값에 의해 가능하다
다만 case 뒤에 붙는 값이 숫자이기 때문에 가독성이 좋지 못해
#define 혹은 enum EState 을 통해 상수를 문자로 바꿔서 활용하는 것이 가능하다
#define POISON 0
rhs = 10;
int case0 = 0;
switch (rhs)
{
case POISON:
printf("rhs is 0\n");
break;
case 3:
{
printf("rhs is 3\n");
}
break;
default:
printf("Default\n");
break;
}
*define 는 요즘 잘 사용되지 않는다.
왜냐하면 디버깅 시 POISON에 해당하는 값을 확인 하는 것이 불가능하기 때문이다.
이는 컴퓨터는 빌드시 POISON을 0으로 바로 치환을 해버리기 때문이다.
enum EState { kPoison = 0, kHeal = 3 };
rhs = 10;
int case0 = 0;
switch (rhs)
{
case kPoison:
printf("rhs is 0\n");
break;
case kHeal:
{
printf("rhs is 3\n");
}
break;
default:
printf("Default\n");
break;
}
그리해서 요즘은 enum을 주로 사용하고
위와 같은 형식의 활용이 가능하다.
'프로그래밍 언어 > C' 카테고리의 다른 글
배열(Array) (0) | 2024.08.12 |
---|---|
반복문(Loop) (0) | 2024.08.09 |
비교 연산자와 논리 연산자 (0) | 2024.08.09 |
연산자(Operators) 와 형변환 (0) | 2024.08.08 |
변수(Variables) (0) | 2024.08.08 |