반응형
안녕하세요? 수구리입니다.
지난 포스팅에서는 C++의 타입에 대해서 알아보았는데요~
이번 시간에는 흔하디 흔하지만 알고 넘어가야 하는 조건문이에요!
오타나 지적은 환영입니다~ 바로 시작하겠습니다!
- 대표적인 조건문
- if/else 문
- switch 문
- 조건 연산자
if/else 문
// 연속 if 문
if (i > 4) {
// do something
} else if {
// do something
} else {
// do something
}
- 소괄호안에는 무조건 bool type의 value이어야 한다.
C++17에서 if 문의 이니셜라이저
- if문 안에 이니셜라이저를 넣는 기능이 추가됨.
// 이니셜라이저에 정의한 변수는 <조건문> <본문> 에서만 사용
if (<이니셜라이저> ; <조건문>) { <본문> }
switch 문
- 다양한 경우를 표현하는 상숫값들을 case 문으로 지정할 수 있다.
- 지정한 표현식의 결과와 일치하는 case가 있으면 그 아래에 나오는 코드를 실행하다가 break를 만나면 빠져나온다.
// 대표적인 switch의 예
switch (MenuItem) {
case OpenMenuItem:
// 파일을 여는 코드
break;
case SaveMenuItem:
// 파일을 저장하는 코드
break;
default:
// 에러 메시지 출력
break;
}
- 모든 switch 문은 if/else 구문으로 바꿀 수 있다.
// 위의 예시를 if / else 구문으로 변경
if (MenuItem == OpenMenuItem){
// 파일을 여는 코드
} else if (MenuItem == SaveMenuItem){
// 파일을 저장
} else {
// 에러 메시지 출력
}
- 폴스루(fallthrough) 방식
- break문을 만날 때까지 case를 계속해서 실행함.
switch(backgroundColor) { case Color::DarkBlue: case Color::Black: // 배경이 진청 or 검정일때 실행될 코드 break; case Color::Red: // 배경이 빨강일 때 실행될 코드 break; }
- 하지만 이 방식은 버그가 발생하기 쉽다.
- C++17에서는 [[fallthrough]] 속성을 지정해서 의도적으로 폴스루 방식을 작성했다고 컴파일러에게 알려주는 기능이 있다.
// C++17 폴스루 switch(backgroundColor) { case Color::DarkBlue: // 배경색이 진청일 때 doSomeThingForDarkBlue(); [[fallthrough]]; case Color::Black: // 배경이 진청 or 검정일때 실행될 코드 doSomeThingForBlackOrDarkBlue(); break; case Color::Red: // 배경이 빨강일 때 실행될 코드 [[fallthrough]] case Color::Green: // 배경이 빨강 or 초록일때 실행될 코드 break; }
조건 연산자
- C++에서 유일하게 인수를 세 개를 받는 삼항 연산자이다.
- 조건을 수행하고 만족하면 동작1, 그렇지 않으면 동작2를 수행한다.
- '[조건] ? [동작1] : [동작2]' 로 표현함.
std::cout << ((i > 2) ? "yes" : "no");
- 조건 연산자는 코드 블록을 실행할 수 없지만, 코드 안에서 사용할 수 있다는 장점이 있다.
- 조건 연산자는 +나 -와 같은 연산자의 일종이다.
이상으로 조건문에 대하여 알아보았습니다~
감사합니다!
반응형
'🌈 프로그래밍 > C++' 카테고리의 다른 글
[C++] 1.1.9 함수 (0) | 2021.08.13 |
---|---|
[C++] 1.1.8 논리 연산자 (0) | 2021.08.13 |
[C++] 1.1.6 타입 (0) | 2021.08.12 |
[C++] 1.1.5 연산자 (0) | 2021.08.12 |
[C++] 1.1.3 ~ 1.1.4 리터럴과 변수 (2) | 2021.08.11 |