본문 바로가기
공부/C, C++

[C] switch case 구문, 삼항 연산자(? :)

by 김샤랑 2021. 12. 28.

[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

댓글