프로그래밍 언어/C

조건문

gcreators 2024. 8. 9. 17:18

조건문은 주어진 조건을 검사하여 참이면 코드를 실행하고 거짓이면 실행하지 않는 것을 의미합니다

 

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