CS/C

20240104 C - 조건문

싹난 감자 2024. 1. 5. 10:46

if ~ else 일관적이지 않은 조건에 좋음 성적, 성적, 성별, 나이

조건이 식 형태일때

switch ~ case 일관적인 조건에 좋음 성적, 성적, 성적, 성적

조건이 단순명확하게 딱 떨어질 때

case의 조건으로 리터럴 상수만 사용 가능, 실수는 사용 안됨

break를 사용하면 {} 지역 하나를 벗어난다

int sum = 0;
switch (3){
	default: break;
	case 1: sum+=1;
    	case 3: sum+=1;
    	case 5: sum+=1;
    	case 6: sum+=1;
}

 

위와 같은 방식으로 일부러 break를 사용하지 않는 경우도 있다.

if문보다 효율적

 

자주 나오는 것들을 먼저 검사하도록 하는것이 좋다.

pc는 그래도 괜찮지만 스위치는 메모리 아껴야하니까 완성해보고 순서 바꿔줘야한다..

 

조건이 압도적으로 많을 때는 switch ~ case가 빠르지만 보통은 if문 사용

switch ~ case는 가독성이 좋음.

 

int sum = 0;
switch (3){
	default: break;
	case 1:
     {
     	sum+=1;
        int case1 = 10;
     }
    	case 3: sum+=1;
    	case 5: sum+=1;
    	case 6: sum+=1;
}

case 안에서 변수를 만들 경우 오류가 발생할 수도 있는데 {} 지역으로 묶어주면 된다.

하지만 보통 그렇게 복잡하게 구현할 때에는 if문 사용

 

분할 정복 기법

비교 항목이 많은 경우 먼저 큰 조건으로 검사해서 세부 검사 횟수를 줄일 수 있다.

다만 첫 검사를 선행조건으로 오해할 수 있으니 유의. 주석 달아준다.

 

if(a == 1) {                 --->>    if(a > 50) {

}                                                 if(a == 51) {

else if ( a == 2) {                         }

}                                                   else if(a == 52) {

.                                                  }

.                                                  .

.                                                  .

                                                   .

                                             }

                                             else{

                                                  if( a == 1) {

                                                  }

                                                   else if( a == 2) {

                                                  }

                                                  .

                                                  .

                                                  .

                                             }

 

'CS > C' 카테고리의 다른 글

20240108 C - 함수  (0) 2024.01.08
20240105 C - 변수  (1) 2024.01.05
20240103 C - 연산자  (1) 2024.01.03
20240102 C - 데이터 타입  (1) 2024.01.02
20231229 C - HelloWorld  (0) 2023.12.29