프로그래밍 공부
작성일
2024. 1. 5. 14:13
작성자
WDmil
728x90

1.1.7 조건문

 

조건문은 주어진 표현식의 결과가 참(true)인지, 거짓(false)인지 에 따라 특정 코드의 실행 여부를 결정할 수 있게 해준다.

C++ 에서는 주로 세가지 형태의 조건문을 사용한다.


if/else 문

가장 흔한 조건문은 if문으로, 보통 else 문과 함께 사용한다. if문은 조건이 참이면 if문 아래 블록 또는 블록이 없을 경우. 바로 아래 라인의 코드를 실행한다.

 

조건이 거짓이라면, else블록의 코드를 실행한다.

 

else 블록이 없다면, if문 블록 아래 라인의 코드가 실행된다.

 

if문의 괄호 영역에 들어갈 구문은 반드시 불(Bollean)변수 이거나, 불타입의 결과값을 가져야 한다.

 

논리 산출 연산자는 표현식이 true, false의 불타입 결과를갖게 해준다.


switch문

switch문은 표현식의 결괏값에 따라 작업을 수행할 수 있게 하는 또다른 문법이다.

 

C++의 switch문에서는 표현식이 반드시 정수 타입이거나, 정수타입으로 변환 가능해야 한다.

그리고 반드시 상수값과 비교되어야 한다.

 

각각의 상수값은 특정 경우(case)를 나타낸다. 만약 표현식이 어떤 case와 매칭되면, 그 case 블록에 있는 코드가 break문을 만날때 까지 실행된다.

 

매칭되는 case가 없을 경우를 위한 default문도 지정할 수 있다.

switch(menuItem) {
	case OpenMenuItem:
    // 파일 열기 코드
    	break;
    case SaveMenuItem:
    // 파일 저장 코드
    	break;
    default : 
    // 에러 메세지 출력 코드
    	break;
};

 

위와같이 활용이 가능하다.

 

switch문은 if/else문으로 바꿔 쓸 수도 있다.

if(menuItem == OpenMenuItem) {
	// 파일 열기 코드
}	else if (menuItem == SaveMenuItem) {
	// 파일 저장하기 코드
}	else {
	//	오류 메세지 출력 코드
}

switch에서 break문을 빠트릴 경우,  바로 아래 case문까지 실행해버림으로 주의해야 한다.

 

의도적으로 그렇게 수행할 수 있지만, 보통 쉬운 실수로 벌어지는 문제일 경우가 많다.


조건연산자

이미 전에 설명했던 조건 연산자 또한 if문에 해당한다고 생각하면 된다.

 

삼항 연산자로서, 만약 ~면 ~하고 아니면 ~한다. 라고 표현하는 문법으로, ? 와 : 로 이루어진다.

 

i가 2보다 크면 yes를 출력하고 아닐경우 no를 출력하는 조건연산자를 작성할 경우 다음과 같다.

std::cout << ((i > 2 ) ? " yes " : " no ");

조건 연산자의 장점은, 어떤 형태의 코드에도 삽입하기 쉽다는 것 이다.

 

위 코드에서도 조건연산자가 메시지를 출력하는 코드 안에 삽입되었다.

 

조건연산자는, 자연어 질문 처럼 해석하면 되는데. i가 2보다 큰가? 그렇다면 yes : 아라면 no 와 같이 ?와 : 를 중심으로 자연어로 풀어서 해석하면 좋다.

 

조건 연산자는 if문 또는 switch문 처럼 조건에 따라 특정 코드 블록을 실행하는 방식이 아니라, 코드 안에 삽입될 뿐이다.

 

if나 switch문이 아니라 연산자(덧셈 또는 뺄셈같은) 로 기능한다.

728x90