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 |