본문 바로가기

Program Languege/C/C++

조건문 - if

조건문

 

 조건문이란 조건에 따라 상황을 판단해서 그 상황에 맞는 행동을 하도록 하는 것이다. 조건이 참일 때 아님 거짓일 때 실행 할 코드를 작성하면 그에 맞게 실행을 한다. 논리연산자 !를 사용하거나 == false 를 사용해서 거짓이 맞을 때(결국 조건이 참일 때)로 설정을 할 수도 있다.(if문에 한해서)

 

 

if문

 

 조건의 결과는 참 아니면 거짓이다. 조건이 참일 때 거짓일 때 등 여러 형태로 사용할 수 있다.

 

형태는 세가지가 있다. 간단한 if(), else if(), else

 

Ex>

 

if(조건)

{

조건이 참일 때 실행 내용.

}

 

먼저 if는 조건이 참일 때 {}안에 내용을 실행한다. 괄호를 쓰지 않아도 되지만 쓰지 않을 경우 예시를 들어주면 다음과 같다

 

- 소스 코드 예시

 

int a = 0;

 

if(a == 0)

std::cout << " a는 0이다. -> 참" << endl;

 

 

 

위와 같이 실행 내용이 한 줄인 경우는 써주지 않아도 잘 실행이 된다. 그렇다면 여러줄의 경우는?

 

- 소스 코드 예시

 

int a = 1;

 

if(a == 0)

std::cout << " a는 0이다. -> 참" << std::endl;

std::cout << "참일 때 이 문장은 출력됩니다." << std::endl;

std::cout << "괄호를 꼭 써서 구역을 구분지어 줍시다." << std::endl;

 

 

결과는 예상과 다르다. if문 밑에 줄을 맞춰서 붙여 써주더라도 상관 없이 괄호로 묶어서 구분지어주지 않으면 바로 밑에 한문장만을 if문의 실행내용으로 인식한다. 이 문제를 해결해주기 위해 괄호로 구분지어주자.

 

 

- 소스 코드 예시

 

int a = 1;

 

if(a == 0)

{

std::cout << " a는 0이다. -> 참" << std::endl;

std::cout << "참일 때 이 문장은 출력됩니다." << std::endl;

std::cout << "괄호를 꼭 써서 구역을 구분지어 줍시다." << std::endl;

}

 

다음과 같이 묶어주면

 

 

위에 실행 결과처럼 a가 1이기 때문에 조건은 거짓이므로 괄호 안에 내용은 실행되지 않는다. 앞으로 코드가 길어지거나 복잡해지는 경우는 많다 그러니 괄호를 써서 꼭 구분지어주는 것을 추천한다.

 

이번에는 참이외의 경우를 처리해주는 조건이 거짓일 경우인 else를 보자.

 

Ex>

if(조건)

{

조건이 참일 때 실행 내용.

}

else

{

조건이 거짓일 때 실행 내용.

}

 

else는 혼자 쓰일 수 없다. 위에처럼 if가 있을 때만 쓸 수가 있다. if는 혼자 쓸 수 있지만 else는 꼭 if와 함께 써줘야 한다. 하지만 else는 없어도 상관이 없다.

 

- 소스 코드 예시

int a = 1;

 

if(a == 0)
 {
      std::cout << "a는 0이다. -> 참" << std::endl;
      std::cout << "참일 때 이 문장은 출력됩니다. if문" << std::endl;
      std::cout << "괄호는 꼭 써서 구역을 구분지어 줍시다!" << std::endl;
 }
 else
 {
      std::cout << "a는 0이다. -> 거짓" << std::endl;
      std::cout << "거짓일 때 이 문장은 출력됩니다. else문" << std::endl;
      std::cout << "괄호는 꼭 써서 구역을 구분지어 줍시다?" << std::endl;
 }

 

구분을 위해 마지막 출력은 끝에 !와 ?를 붙여주었다. 결과는

 

 

결과는 if문 조건이 거짓이기 때문에 else문의 내용이 실행된다.

 

 

else if문은 if는 아닌데 else도 아닌 경우를 위해서 사용한다. 좀 더 여러가지 조건을 따지는 경우가 이에 해당한다.

 

Ex>

if(조건)

{

조건이 참일 때 실행 내용.

}

else if(조건)

{

조건이 참일 때 실행 내용. (if의 조건은 거짓이고 else if의 조건이 참인 경우.)

}

else

{

조건이 거짓일 때 실행 내용.

}

 

else if의 위치는 if와 else의 사이이며 else가 없는 경우도 있기때문에 if의 아래붙어주면 된다. else if문 또한 else처럼 쓰지 않아도 된다.else if는 if의 조건이 거짓이며 else if의 조건이 참인 경우 실행된다. else if는 여러개로 복수로 붙을 수 있다.

 

Ex>

if(조건)

{

조건이 참일 때 실행 내용.

}

else if(조건)

{

조건이 참일 때 실행 내용.

}

else if(조건)

{

조건이 참일 때 실행 내용.

}

else if(조건)

{

조건이 참일 때 실행 내용. 

}else

{

조건이 거짓일 때 실행 내용.

}

 

다만 여기서 알아둘 것은 위에서부터 순차적으로 조건을 확인하고 참인 경우 해당 조건의 실행 내용만 실행하고 넘어간다는 것이다.

 

- 소스 코드 예시

 

 int a = 1;

 

if(a == 0)
 {
      std::cout << "a는 0이다. -> 참" << std::endl;
      std::cout << "참일 때 이 문장은 출력됩니다. if문" << std::endl;
      std::cout << "괄호는 꼭 써서 구역을 구분지어 줍시다!" << std::endl;
 }
 else if(a == 1)
 {
      std::cout << "a는 1이다. -> 참" << std::endl;
      std::cout << "참일 때 이 문장은 출력됩니다. 첫번째else if문" << std::endl;
      std::cout << "괄호는 꼭 써서 구역을 구분지어 줍시다!" << std::endl;
 }
 else if(a < 2)
 {
      std::cout << "a는 2보다 작다. -> 참" << std::endl;
      std::cout << "참일 때 이 문장은 출력됩니다. 두번째else if문" << std::endl;
      std::cout << "괄호는 꼭 써서 구역을 구분지어 줍시다!" << std::endl;
 }
 else
 {
      std::cout << "조건중에 참이 없다." << std::endl;
      std::cout << "모든 조건이 거짓일 때 이 문장은 출력됩니다. else문" << std::endl;
      std::cout << "괄호는 꼭 써서 구역을 구분지어 줍시다!" << std::endl;
 }

 

잘 보면 a는 1이기 때문에 첫번째else if와 두번째else if가 조건이 참이다. 그렇다면 위에 else if문만 실행될까?

 

 

위에서 말한대로 첫번째 else if문만 실행하고 끝났다. 조건문 안에 내용은 논리연산자를 사용한 조건식이 아닌 논리형 변수인 bool이 들어가도 되고 또는 0이나 0이 아닌 값이 들어가도된다. 하지만 조건을 확실히 알 수 있도록 논리연산자를 사용한 조건식이나 논리형 변수를 사용하도록 하자.

 

또한 if, else if, else 안에 중첩으로 다시 if, else if, else문을 사용할 수 있다.

 

 

 

 

 

 

- 출처 : 열혈강의 C++ 언어본색

※ 책을 보고 공부한 내용을 정리하였기때문에 내용이 책과 다를 수 있습니다.

'Program Languege > C/C++' 카테고리의 다른 글

반복문  (0) 2013.02.14
조건문 switch  (0) 2013.02.14
연산자  (2) 2013.02.13
형 변환  (0) 2013.02.13
데이터, 기본 자료형  (0) 2013.02.13