🌈 프로그래밍/C++

[C++] 1.1.7 조건문

반응형

안녕하세요? 수구리입니다.

 

지난 포스팅에서는 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