[C] switch case 구문, 삼항 연산자(? :)
- switch case와 if else 문 비교
switch (10) // switch 괄호 안에 들어간 값이 case 값과 일치하면 그 안을 수행. break;로 switch문을 빠져나온다.
{
case 10: // switch(10)일 경우 이곳을 수행
break;
case 20: // switch(20)일 경우 이곳을 수행
break;
default: // else 구문과 같다. case에 해당하지 않을 때, 기본으로 수행
break;
}
int iTest = 10;
if (iTest == 10)
{
}
else if (iTest == 20)
{
}
else
{
}
위 switch 구문과 if else 구문은 같은 상황이다. 같은 기능을 하는데 왜 switch 구문이 따로 있을까?
=> if 구문은 상황이 늘어날수록 코드가 더러워진다. 그래서 switch가 더 효율적인 상황이 있다. 상황에 맞게 사용.
- switch case 구문을 사용할 때 주의할 점
- break를 쓰는 것을 잊지 말아야 한다.
case 문 안에 break를 안쓰면 그 case를 수행하고도 아래 default문까지 수행하여 원하는 실행이 되지 않을 수가 있다.
-> Q: 그러면 case문 안에 break가 없으면 문법적 오류가 발생하게 하면 되는데 왜 그러지 않았나?
- A: break를 case마다 쓰지 않는 경우가 있다.
int iTest = 20;
switch (iTest)
{ // iTest 가 10, 20, 30 이면 수행하도록 작성할 때,
case 10:
case 20:
case 30:
break;
default:
break;
}
위 switch문을 if문으로 바꾸면 아래와 같다.
if ( iTest == 10 || iTest ==20 || iTest == 30)
{
}
else
{
}
- 삼항 연산자(? :)
iTest가 20인 것이 참이면, iTest에 100을 대입하라. 거짓이면 iTest에 200을 대입하라.
iTest == 20 ? iTest 100 : iTest = 200;
if 문으로는 아래와 같다.
if (iTest == 20)
{
iTest = 100;
}
else
{
iTest = 200;
}
삼항 연산자를 쓰면 코드를 더 간결하게 쓸 수 있다. 하지만 선호는 개인마다 다르다.
-번외) case에 중괄호{ } 를 쓰는 경우?
변수를 생성하면 괄호를 써야한다.
이런 상황이 있다고 가정하자.
겉으로는 문제가 없어 보인다. 하지만 실행하면 오류가 발생한다.
아래와 같이 중괄호를 쳐주자!
'공부 > C, C++' 카테고리의 다른 글
[C] 반복문(for, while), continue, break (0) | 2021.12.29 |
---|---|
[C] 전처리기(Preprocessor), #define (0) | 2021.12.28 |
[C] 비교 연산자, if else 구문 (0) | 2021.12.28 |
[C] 논리 연산자 (0) | 2021.12.26 |
[C] 증감 연산자 (0) | 2021.12.26 |
댓글