if ~else 와 switch의 차이점

두가지가 똑같이 변수에 따라서 어떤 것을 실행할지 선택됩니다.


만약 if문으로 선택해야하는 변수의 갯수가 100개정도 된다고 할때,

변수값이 99라면, 변수==99가 선택 되기 까지 1부터 2,3,4.... 99까지 비교하고 99번째 선택이 됩니다.

CPU가 힘이 많이 들겠죠...

 

이때 switch문을 사용하면 단 한번에 case 99: process_99(); break; 구문을 수행합니다.

그 이유는 switch문에서 선택 항목이 4개 이상이면 배열 변수 처리되어 포인터 주소를 가지고 있다가
한번에 점프 해버리기 때문입니다.



//****************************************************************

// if ~ else if~ else
//조건문의 하나인 if ~else 생각보다 많이 쓰는 문법이다

//****************************************************************
#include <stdio.h>
int main(void)
{
 int key;
 
 printf("점수를 입력하세요:");
 scanf("%d",&key);
 //if~else 문과 비슷한 형식의 swicth문이다 물론 쓰는 형식은 비슷하지만...

 switch(key/10)
 {
       case 10: puts("A");
       break;
       case 9: puts("B");
       break;
       case 8: puts("C");
       break;
       case 7: puts("");
       break;
       default:puts("F");
 }
 /*
 if(key>=91)
 {
        puts("A");
 }
 else if(key>=81)
 {
        puts("B");
 }
 else if(key>=71)
 {
        puts("C");
 }else if(key>=61)
 {
        puts("D");
 }else
 {
        puts("F");
 }*/

}
//////////////////////////////////////////////////////////////////////
// 문자열을 바탕으로 하는 switch문과 if~else문의 예제
////////////////////////////////////////////////////////////////////// 

/*
void main()
{
 int key;

 scanf("%d", &key);

 
 switch(key)
 {
  case 1: puts("입학을 환영합니다");
   break;
  case 2: puts("좋을때다!!!");
   break;
  case 3: puts("비트 하는 시기!!");
   break;
  case 4: puts("헉!!아직 학교에...ㅠㅠ");
   break;
  default:puts("잘못 입력 하셨습니다.초딩입니다.");
 }
}*/


 //break  {}를 빠져나가라 !!//switch ~case 반복문을 빠져나간다.
 
 /*
 //학년에 따른 분기!!
 if(key==1)//1학년일 경우!!
 {
      puts("입학을 환영합니다");
 }
 else if(key ==2)//2학년일 경우 !!
 {
      puts("좋을때다!!!");
 }
 else if(key ==3)
 {
      puts("비트 하는 시기!!");
 }else if(key==4)
 {
      puts("헉!!아직 학교에...ㅠㅠ");
 }else
 {
      puts("잘못 입력 하셨습니다.");
 }
*/

From SM Bit 


'프로그래밍 > Language C' 카테고리의 다른 글

[C언어] 제어문  (0) 2011.11.11
[C언어] 쉬어가는 코너 10개 문제  (0) 2011.11.11
[C언어] 연산자 #2  (0) 2011.11.10
[C언어] 연산자  (0) 2011.11.10
[C언어] 변수를 선언하는 룰!!  (0) 2011.11.10