C & C++

[C언어] if문 활용 조건문 사용법 예제 정리 (else if, else문, 중첩 조건문 등)

jimmy_AI 2022. 5. 1. 17:27
반응형

C언어 if, else if, else 케이스 비교

C언어에서 if, else if, else를 사용한 조건문의 사용법을 단일 조건의 가장 간단한 케이스부터

다중 조건의 복잡한 경우까지 정리해보며 각 경우의 차이를 이해해보도록 하겠습니다.

 

 

if문 기본 케이스(단일 조건)

C언어에서 if문은 if(조건){조건 만족 시 실행할 구문} 형태로 작성하게 됩니다.

들여쓰기는 필요 없으나, 조건은 소괄호 () 내에, 실행 구문은 중괄호 {} 내

괄호 모양을 구분해서 사용해주셔야 합니다.

 

예시로, 아래 코드를 실행하면 a <= 10 조건이 만족되어

if문 내의 printf 구문이 실행되는 것을 볼 수 있습니다.

#include <stdio.h>

int main(){

int a = 8;

if(a <= 10){
  printf("a는 10보다 작거나 같습니다.\n");
}
  
}

 

 

if ~ else 구문(조건 만족 안할 경우 분기)

if문 내의 조건을 만족하지 않을 경우, 다른 구문을 실행하고 싶다면

else를 통하여 조건문을 분기해주시면 됩니다.

 

사용 구문의 형태는 if(조건){조건 만족 시 실행할 구문}else{조건 만족 안할 시 실행할 구문}

의 문법으로 작성하시면 됩니다.

 

아래 예시에서는 if문 내의 조건을 만족하지 않아 else문 내의 printf문이 대신 실행됩니다.

#include <stdio.h>

int main(){

int a = 12;

if(a <= 10){
  printf("a는 10보다 작거나 같습니다.\n");
}else{
  printf("a는 10보다 큽니다.\n");
}
  
}
반응형

else if를 이용한 조건 분기(조건 여러개의 경우)

한 조건문 내에서 비교하고 싶은 조건이 여러개인 경우, else if문을 중간에 넣어

조건을 분기할 수 있습니다.

 

else if문의 사용법도 if문처럼 조건실행할 구문을 각각 (){} 내에 넣어주면 되며,

else if문의 개수의 제한은 없습니다.

 

else if문을 사용한 경우에도 마지막에 else문으로 모든 조건이 만족하지 않을 경우

실행할 코드를 지정할 수 있으며(else문은 없어도 무관합니다.),

이 때 중간에 1가지 조건이라도 만족되는 경우 해당 조건문의 실행은 종료가 됩니다.

 

예시로, 아래의 코드를 실행하면 두 번째 else if문 내의 조건이 만족되어

해당 printf문이 실행됩니다.

#include <stdio.h>

int main(){

int a = 9;

if(a < 5){
  printf("a는 5보다 작습니다.\n");
}else if(a < 8){
  printf("a는 5보단 작지 않지만 8보단 작습니다.\n");
}else if(a < 10){
  printf("a는 8보단 작지 않지만 10보단 작습니다.\n"); // 해당 구문 실행
}else{
  printf("a는 10보다 크거나 같습니다.\n"); 
}

}

 

 

중첩 조건문 예시(if문 안에 if문)

if문 내부에 또 다른 if문을 사용하는 등 중첩된 형태의 조건문 역시 사용이 가능합니다.

 

다음 코드에서는 5보다 크다는 메시지와 10보다 크지 않다는 메시지가

둘 다 출력되는 것을 확인하실 수 있습니다.

#include <stdio.h>

int main(){

int a = 9;

if(a > 5){
  printf("a는 5보다 큽니다.\n");  
  
  if(a > 10){
    printf("a는 10보다도 큽니다.\n");
  }else{
    printf("a는 10보다는 크지 않습니다.\n");
  }
  
}
  
}

중괄호로 각 조건문의 범위를 잘 정해주는 것이 중요하며,

참고로 if문 내에서도 for, while문의 반복문 등 구문도 얼마든지 사용이 가능합니다.

 

 

번외1) 혼동하기 쉬운 문법 : if ~ if vs if ~ else if

if문 여러개를 나열해서 조건문 여러개를 사용한 케이스와

한 조건문 내에서 if ~ else if로 조건을 분기한 케이스의 차이를 혼동하는 경우가 많습니다.

 

if ~ if처럼 조건문 여러개를 사용한 경우, 각 조건을 만족하면 모두 해당 구문이 실행되는 반면,

if ~ else if로 한 조건문 내에서 분기할 경우 위의 조건 만족 시 아래 조건은 검사하지 않는다

큰 차이가 있습니다.

#include <stdio.h>

int main(){

int a = 12;

// if ~ if의 경우 : 두 printf문 모두 실행
if(a > 10){
  printf("a는 10보다 큽니다.\n");
}
if(a > 5){
  printf("a는 5보다 큽니다.\n");
}

// if ~ else if의 경우 : 위의 printf만 실행
if(a > 10){
  printf("a는 10보다 큽니다.\n");
} // 여기서 조건문 바로 종료
else if(a > 5){ // 해당 조건은 검사하지 않음
  printf("a는 5보다 큽니다.\n");
}
  
}

 

 

번외2) switch ~ case 구문을 활용한 조건문

C언어에서는 if ~ else if ~ else 구문 이외에도

switch ~ case 문법을 사용하여 조건문을 분기하는 것도 가능합니다.

 

이에 대한 사용 방법과 예제는 아래의 포스팅을 참고해주세요.

 

[C언어] switch ~ case 문 사용법, 유의 사항 정리

C언어 조건문 분기 : switch ~ case 문 안녕하세요. 이번 글에서는 C언어에서 조건이 여러개인 경우 분기를 원활하게하고, 가독성을 높일 수 있는 switch ~ case 문의 사용법에 대해서 살펴보겠습니다.

jimmy-ai.tistory.com

이상으로 C언어의 조건문에 관해 정리한 포스팅을 마무리하도록 하겠습니다. 감사합니다.