1581, 16/80 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   hacs98
   c¾ð¾î 2 switch ±¸¹®

http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=7889 [º¹»ç]


  À̹ø °­Á¿¡¼­´Â if ¹®ÀÇ Ä£±¸ÀÎ switch ¹®¿¡ ´ëÇØ ¹è¿ö º¸µµ·Ï ÇÏ°Ú½À´Ï´Ù. switch ¹®ÀÌ if ¹®ÀÇ Ä£±¸¶ó°í ÇÑ ÀÌÀ¯´Â ÇÏ´Â ÀÏÀÌ Á¤¸»·Î if ¹®°ú ºñ½ÁÇϱ⠶§¹®ÀÌÁÒ. ÀÏ´Ü, ¾Æ·¡ÀÇ ÃÊ-°£´ÜÇÑ °­¾ÆÁö ½Ã¹Ä·¹À̼ÇÀ» º¸¼¼¿ä.

/* ¸¶ÀÌÆê */
#include <stdio.h>
int main()
{
    int input;

    printf("¸¶ÀÌÆê \n");
    printf("¹«¾ùÀ» ÇÏ½Ç °ÍÀÎÁö ÀÔ·ÂÇϼ¼¿ä \n");
    printf("1. ¹äÁÖ±â \n");
    printf("2. ¾Ä±â±â \n");
    printf("3. Àç¿ì±â \n");

    scanf("%d", &input);

    if(input == 1)
    {
        printf("¾ÆÀÌ ¸ÀÀÖ¾î \n");
    }
    else if(input == 2)
    {
        printf("¾ÆÀÌ ½Ã¿øÇØ \n");
    }
    else if(input == 3)
    {
        printf("zzz \n");
    }
    else
    {
        printf("¹«½¼ ¸í·ÉÀÎÁö ¸ø ¾Ë¾Æ µè°Ú¾î. ¿Ð¿Ð \n");
    }
    return 0;
}

¼º°øÀûÀ¸·Î ÄÄÆÄÀÏ ÇÏ¿´´Ù¸é



¿Í °°ÀÌ 3 °¡Áö ¸í·É¿¡ ´ëÇØ ¹ÝÀÀÇÏ°í ¾Ë ¼ö ¾ø´Â ¸í·ÉÀº '¹«½¼ ¸í·ÉÀÎÁö ¸ø ¾Ë¾Æ µè°Ú¾î. ¿Ð¿Ð' ¶ó°í ³»º¸³À´Ï´Ù.

  ±×·±µ¥, ¸¸¾à °­¾ÆÁö°¡ À§ 3 °¡Áö ¸í·É¸¸ ¹ÝÀÀÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó 10 °¡Áö ¸í·É¿¡ ¹ÝÀÀÇÏ°Ô ÇÏ°í ½Í´Ù°í ÇսôÙ. ±×·¸´Ù¸é ¿©·¯ºÐÀº ¾Æ¸¶µµ ¾Æ·¡¿Í °°ÀÌ ÇÒ °Í ÀÔ´Ï´Ù. (Âü°í·Î ¾Æ·¡ '...' ÀÎ ºÎºÐÀº ÇÊÀÚ°¡ ¾²±â ±ÍÂú¾Æ¼­ »ý·«ÇÑ ºÎºÐ ÀÔ´Ï´Ù. )


   if (...)
    {
        ...
    }
    else if(...)
    {
        ...
    }
    else if(...)
    {
        ...
    }
    else if(...)
    {
        ...
    }
     else if(...)
    {
        ...
    }
    else if(...)
    {
        ...
    }
    else if(...)
    {
        ...
    }
    else if(...)
    {
        ...
    }
    else if(...)
    {
        ...
    }
    else if(...)
    {
        ...
    }

  À½, ¾Æ¸¶µµ À§ ¼Ò½ºÄڵ带 º¸´Â »ç¶÷ÀÌ »ó´çÈ÷ ºÒÆíÇÏ°Ô ´À³¥ °ÍÀ̶ó°í »ý°¢µÇÁö ¾Ê³ª¿ä? ¹°·Ð º¸´Â ÀÌ¿¡ µû¶ó ´Ù¸£°ÚÁö¸¸ ¾Æ¸¶ ´ëºÎºÐÀÇ »ç¶÷ÀÌ ±×·¸°Ô »ý°¢ÇÒ °Í ÀÔ´Ï´Ù. ¾Æ¸¶ ½ÇÁ¦·Î »ç¶÷µé°ú ÇÔ²² ÇÁ·ÎÁ§Æ®¸¦ ÁøÇà ÇÒ ¶§ À§¿Í °°Àº ¼Ò½º¸¦ ³²¹ßÇÏ°Ô µÈ´Ù¸é ÀдÂÀ̵µ ºÒÆíÇÏ°í ¾²´Â »ç¶÷µµ ¼Õ¸ñÀÌ ¸¹ÀÌ ¾ÆÇà °Í ÀÔ´Ï´Ù. (¹°·Ð Ctrl + v ½Å°øÀÌ ÀÖ±â´Â ÇÏÁö¸¸...)

  µû¶ó¼­, À§¿Í °°ÀÌ µ¿ÀÏÇÑ º¯¼ö¿¡ ´ëÇØ ºñ±³¹®ÀÌ ¹Ýº¹µÇ´Â °æ¿ì¿¡ ¾Æ·¡¿Í °°ÀÌ ±ò²ûÇÑ switch ¹®À» Àû¿ë ½Ãų ¼ö ÀÖ½À´Ï´Ù.

/* ¾÷±×·¹ÀÌµå ¹öÀü */
#include <stdio.h>
int main()
{
    int input;

    printf("¸¶ÀÌÆê ¾÷±×·¹À̵å\n");
    printf("¹«¾ùÀ» ÇÏ½Ç °ÍÀÎÁö ÀÔ·ÂÇϼ¼¿ä \n");
    printf("1. ¹äÁÖ±â \n");
    printf("2. ¾Ä±â±â \n");
    printf("3. Àç¿ì±â \n");

    scanf("%d", &input);

    switch(input)
    {
    case 1:
        printf("¾ÆÀÌ ¸ÀÀÖ¾î \n");
        break;

    case 2:
        printf("¾ÆÀÌ ½Ã¿øÇØ \n");
        break;

    case 3:
        printf("zzz \n");
        break;

    default :
        printf("¹«½¼ ¸í·ÉÀÎÁö ¸ø ¾Ë¾Æ µè°Ú¾î. ¿Ð¿Ð \n");
        break;
    }

    return 0;
}


  ¾Æ¸¶ ÄÄÆÄÀÏ µÈ °á°ú´Â À§¿Í µ¿ÀÏÇÏ°Ô ³ª¿Ã °Í ÀÔ´Ï´Ù. ÀÌÁ¦, À§ ¼Ò½º Äڵ忡¼­ °¡Àå Áß¿äÇÑ ºÎºÐÀÎ switch ¹® ºÎºÐÀ» »ìÆ캸µµ·Ï ÇսôÙ.

  
switch(input)
    {
    case 1:
        printf("¾ÆÀÌ ¸ÀÀÖ¾î \n");
        break;

    case 2:
        printf("¾ÆÀÌ ½Ã¿øÇØ \n");
        break;

    case 3:
        printf("zzz \n");
        break;

    default :
        printf("¹«½¼ ¸í·ÉÀÎÁö ¸ø ¾Ë¾Æ µè°Ú¾î. ¿Ð¿Ð \n");
        break;
    }

  switch ¹®ÀÇ ±âº» ±¸Á¶´Â ¾Æ·¡¿Í °°½À´Ï´Ù.

    switch(º¯¼ö)
    {
    case °ª1:
        ¸í·Éµé;
        break;
    case °ª2:
        ¸í·Éµé;
        break;
        .. (»ý·«) ..
    }


  ÀÌ ¶§, º¯¼ö ºÎºÐ¿¡´Â °ª1, °ª2, ... µé°ú ºñ±³ÇÒ º¯¼ö°¡ µé¾î°¡°Ô µË´Ï´Ù. À§ ¿¹Á¦ÀÇ °æ¿ì input À» 1 °ú 2 ¿Í 3 °ú ºñ±³ÇØ¾ß ÇßÀ¸¹Ç·Î º¯¼ö ºÎºÐ¿¡´Â input ÀÌ µé¾î°¡°Ô µË´Ï´Ù. ÀÌ ¶§ switch ¹®¿¡ »ç¿ëµÉ º¯¼ö·Î´Â ¹Ýµå½Ã Á¤¼ö µ¥ÀÌÅ͸¦ º¸°üÇÏ´Â º¯¼ö¿©¾ß ÇÕ´Ï´Ù. ´Ù½Ã¸»ÇØ 'º¯¼ö' ºÎºÐ¿¡ µé¾î°¡´Â º¯¼öµéÀÇ Å¸ÀÔÀº char, short, int, long ÁßÀÇ Çϳª¿©¾ß ÇÕ´Ï´Ù. ¸¸¾à input ÀÌ float À̳ª double À̶ó¸é ÄÄÆÄÀϽà ¿À·ù°¡ ¹ß»ýµÇ°Ô µË´Ï´Ù.

  º¯¼ö ==  °ª1 ÀÏ ¶§, °¡Àå ¸Ç À§ÀÇ case ÀÇ ¸í·ÉÀÌ ½ÇÇàµË´Ï´Ù. À§ ¿¹Á¦ÀÇ °æ¿ì 1 ÀÌ ÀԷµǸé case 1: ÀÌ ÂüÀÌ µÇ¹Ç·Î ±× case ¾ÈÀÇ ³»¿ëµéÀÌ ¸ðµÎ ½ÇÇàµË´Ï´Ù. ÀÌ ¶§ °¢ ¸í·ÉµéÀ» ¸ðµÎ ½ÇÇàÇÑ ÈÄ break ¸¦ ¸¸³ª¸é switch ¹®À» ºüÁ® ³ª°¡°Ô µË´Ï´Ù. ¿¹¸¦ µé¾î¼­ÀÌ ÀԷµǾú´Ù¸é case 1: ÀÌ ÂüÀ̹ǷΠ printf("¾ÆÀÌ ¸ÀÀÖ¾î \n");  ¿Í break; °¡ ½ÇÇàµÇ¾î "¾ÆÀÌ ¸ÀÀÖ¾î" ¸¦ Ãâ·ÂÇÏ°í break ¸¦ ÅëÇØ switch ¹®À» ºüÁ® ³ª°¡°Ô µË´Ï´Ù. ¸¸¾à º¯¼ö == °ª2 ¶ó¸é case °ª1 Àº ½ÇÇàµÇÁö ¾Ê°í case °ª2 ¸¸ ½ÇÇàµÇ°Ô µË´Ï´Ù.

  ¶ÇÇÑ ÁÖÀÇÇÒ Á¡À¸·Î´Â '°ª' ¿¡ À§Ä¡ÇÏ´Â °ÍµéÀÌ ¹«Á¶°Ç »ó¼ö ÀÌ¿©¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ¸¸¾à '°ª' ºÎºÐ¿¡ º¯¼öµéÀÌ ¿À°ÔµÈ´Ù¸é ¿À·ù°¡ ¹ß»ýÇÏ°Ô µÇ´Âµ¥ ±× ÀÌÀ¯´Â switch ¹®ÀÇ ³»ºÎÀûÀΠó¸® ¹æ¹ý ¶§¹®ÀÔ´Ï´Ù. (¾Æ·¡ÂÊ ¼³¸í µÇ¾î ÀÖ½À´Ï´Ù.)

  ¸¶Áö¸·À¸·Î switch ¹®ÀÇ default ´Â if ¹®ÀÇ else ¿Í °°Àº ¿ªÇÒÀ» ÇÕ´Ï´Ù. À̵µ Àúµµ ¾Æ´Ñ °ÍµéÀÌ ¿À´Â case ÀÌÁÒ. Áï À§ ¿¹Á¦ÀÇ °æ¿ì input ÀÌ 1 µµ 2 µµ 3 µµ ¾Æ´Ò ¶§ µµ´ÞÇÏ´Â °æ¿ì°¡ µË´Ï´Ù.

  ±×·±µ¥ À§ switch ¹®¿¡¼­ µîÀåÇÑ break ´Â ¾îµð¼­ ¸¹ÀÌ º» °Í °°Áö ¾Ê½À´Ï±î? ¸¸¾à ±×·± »ý°¢ÀÌ µé¾ú´Ù¸é ´ç½ÅÀº C ¾ð¾î °øºÎ¸¦ ¾ÆÁÖ Ãæ½ÇÈ÷ ÇÏ°í ÀÖ´Ù°í »ý°¢ µË´Ï´Ù. (¸¸¾à Àß ¸ð¸£°Ú´Ù¸é ¿©±â¸¦ Ŭ¸¯Çϼ¼¿ä) break; ¹®À» ½ÇÇàÇÏ¸é ¾Æ·¡ÀÇ ¸ðµç case µéÀ» ¹«½ÃÇÏ°í switch ¹ÛÀ¸·Î ºüÁ®³ª°¡±â ¶§¹®¿¡ ¹äÀ» ÁÖ¾ú´Âµ¥ °­¾ÆÁö°¡ '¾ÆÀÌ ¸ÀÀÖ¾î' ¶ó°í ÇÒ ÀÏÀº ¾ø°Ô µË´Ï´Ù.

  ÇÏÁö¸¸ ¸¸¾à ¿©·¯ºÐÀÌ break; ¹®À» ºü¶ß¸®°Ô µÇ¸é À§¿Í °°Àº »óȲÀÌ ¹ú¾îÁú ¼ö ÀÖ½À´Ï´Ù.

/* ½ÇÆÐÀÛ */
#include <stdio.h>
int main()
{
    int input;

    printf("¸¶ÀÌÆê ¾÷±×·¹À̵å\n");
    printf("¹«¾ùÀ» ÇÏ½Ç °ÍÀÎÁö ÀÔ·ÂÇϼ¼¿ä \n");
    printf("1. ¹äÁÖ±â \n");
    printf("2. ¾Ä±â±â \n");
    printf("3. Àç¿ì±â \n");

    scanf("%d", &input);

    switch(input)
    {
    case 1:
        printf("¾ÆÀÌ ¸ÀÀÖ¾î \n");

    case 2:
        printf("¾ÆÀÌ ½Ã¿øÇØ \n");

    case 3:
        printf("zzz \n");

    default :
        printf("¹«½¼ ¸í·ÉÀÎÁö ¸ø ¾Ë¾Æ µè°Ú¾î. ¿Ð¿Ð \n");

    }

    return 0;
}

¼º°øÀûÀ¸·Î ÄÄÆÄÀÏ ÇÑ´Ù¸é



¿Í °°ÀÌ ¿ôÁö ¾ÊÀ» ¼ö ¾ø´Â »óȲÀÌ ¹ú¾îÁý´Ï´Ù. ¿©·¯ºÐµéÀÌ 1 À» ÀÔ·ÂÇÑ´Ù¸é case 1: ÀÌ ½ÇÇàµÇ¾î ±× ³»¿ëµéÀÌ ¸ðµÎ ½ÇÇàµÇÁö¸¸ break ¹®À¸·Î switch ¹®À» ºüÁ® ³ª°¡Áö ¸øÇؼ­ ¾Æ·¡ case µé ±îÁö ÁÙÁÙÀÌ ½ÇÇàµÇ¾î À§¿Í °°Àº ²ÃÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.

/* ¿µ¾î ¸»Çϱâ */
#include <stdio.h>
int main()
{
    char input;

    printf("(¼Ò¹®ÀÚ) ¾ËÆĺª Àбâ\n");
    printf("¾ËÆĺª : ");

    scanf("%c", &input);

    switch(input)
    {
    case 'a':
        printf("¿¡ÀÌ \n");
        break;

    case 'b':
        printf("ºñ \n");
        break;

    case 'c':
        printf("¾¾ \n");
        break;

    default :
        printf("Á˼ÛÇØ¿ä.. ¸Ó¸®°¡ ³ªºü¼­ ¸ø Àоî¿ä  \n");
        break;

    }

    return 0;
}

  ¼º°øÀûÀ¸·Î ÄÄÆÄÀÏ ÇÏ¿´´Ù¸é



¿Í °°ÀÌ ³ª¿É´Ï´Ù.

  »ç½Ç, ¿©±â¿¡ Àǹ®ÀÌ µå´Â »ç¶÷µéµµ ÀÖ½À´Ï´Ù. '¾Æ±î À§¿¡¼­ switch ¹®Àº Á¤¼ö µ¥ÀÌÅ͸¸ ó¸®ÇÑ´Ù°í Çߴµ¥ ¿Ö ¿©±â¼­´Â ¹®ÀÚ µ¥ÀÌÅ͵µ 󸮰¡ µÇ´Â °ÍÀΰ¡?' ±×·±µ¥, ¾ÈŸ±õ°Ôµµ ÀÌ·¯ÇÑ Àǹ®ÀÌ 5 ÃÊ À̳»·Î ÇØ°áµÇÁö ¾ÊÀ¸¸é ¾Æ¸¶ ¾Õ¿¡¼­ ¹è¿î ³»¿ëÀ» ±î¸ÔÀ¸¼ÌÀ» °ÍÀÔ´Ï´Ù. (±× ³»¿ëÀ» º¸·Á¸é ¿©±â¸¦ Ŭ¸¯Çϼ¼¿ä) ¿Ö³ÄÇϸé ÄÄÇ»ÅÍ´Â ¹®ÀÚ¿Í ¼ýÀÚ¸¦ ±¸ºÐ ¸øÇÕ´Ï´Ù. ÄÄÇ»ÅÍ´Â ¹®ÀÚ¸¦ ¸ðµÎ ¼ýÀڷΠó¸®ÇÑ µÚ, ¿ì¸®¿¡°Ô º¸¿©ÁÙ ¶§ ¿¡¸¸ ¹®ÀÚ·Î º¸¿©ÁÖ´Â °ÍÀÌÁö¿ä. µû¶ó¼­, ¹®ÀÚ = Á¤¼ö ¶ó°í »ý°¢Çصµ °ÅÀÇ ¹«¹æÇÕ´Ï´Ù.

  ÀÌÂë switch ¹®À» ¹è¿ì°í ³ª¸é µå´Â Àǹ®ÀÌ Çϳª ÀÖ½À´Ï´Ù.

"Á¤¸»·Î switch ¹®ÀÌ ¿ì¸®¿¡°Ô ÇÊ¿äÇÑ°¡? if - else ·Î ´Ù ÇØ°áµÇ´Âµ¥ ¿Ö ±ÍÂú°Ô switch ¹®À» ¸¸µé¾úÀ»±î? Â÷ÀÌ´Â ´ÜÁö °ÑÀ¸·Î ¾ó¸¶³ª ±ò²ûÇÑÁö°¡ ´Ù¸¦ »ÓÀε¥... ³»ºÎÀûÀ¸·Î switch ¹®°ú if-else ¿Í´Â Â÷ÀÌ°¡ ¾ø³ª¿ä?"

  Á¤¸»·Î, ÈǸ¢ÇÑ »ý°¢À̶ó°í »ý°¢ÇÕ´Ï´Ù. À§ Áú¹®¿¡ ´ëÇÑ ´äº¯À» Á¤È®ÇÏ°Ô ÀÌÇØÇÏ·Á¸é ¾î¼Àºí¸®¾î¿¡ ´ëÇÑ ÀÌÇØ°¡ ÇÊ¿ä·Î ÇÕ´Ï´Ù.
(Âü°í·Î if ¹®°ú switch ¹®ÀÇ Â÷ÀÌ¿¡ ´ëÇÑ ¼³¸íÀ» ÀÚ¼¼ÇÏ°Ô Àß ´Ù·ç´Â °÷ : http://blog.naver.com/kki2406?Redirect=Log&logNo=80041410085 )

À§¿¡ ¸µÅ© °ÉÀº »çÀÌÆ®¿¡ µé¾î°¡ ³»¿ëÀ» ¸ðÁ¶¸® ÀÌÇØÇÑ´Ù¸é ´õÇÒ ³ªÀ§ ¾øÀÌ ÁÁ°ÚÀ¸³ª ¾Æ¸¶ C ¾ð¾î¸¦ óÀ½ ¹è¿ì´Â »ç¶÷µéÀÇ °æ¿ì °ÅÀÇ ÀÌÇظ¦ ¸øÇÒ °ÍÀÌ´Ï Á¦°¡ °£´ÜÇÏ°Ô ¼³¸í µå¸®°Ú½À´Ï´Ù. (¸¸¾à ¾Æ·¡ÀÇ ³»¿ëÀ» ÀÌÇØÇÏÁö ¸øÇÏ´õ¶ó°í ±×³É ³Ñ¾î°¡¼¼¿ä. »ç½Ç ¾î¼Àºí¸®¾î¸¦ ¹è¿ìÁö ¾ÊÀº ÀÌ»ó ÀÌÇØÇϱâ Èûµì´Ï´Ù)


switch ¹® ÀÌ¿ë

if ¹®




  À§ µÎ ±×¸²Àº °°Àº ¼Ò½º Äڵ带 switch ¹®°ú if ¹®À» ÀÌ¿ëÇÏ¿© ³ªÅ¸³­ °ÍÀÔ´Ï´Ù. »ç½Ç, ¿ÜÇüÀûÀ¸·Î µ¿ÀÛÇÏ´Â °ÍÀº Â÷ÀÌ°¡ ¾ø½À´Ï´Ù. ´ÜÁö ³»ºÎÀûÀ¸·Î ¾î¶»°Ô 󸮵dzİ¡ ´Ù¸¦ »ÓÀÌÁö¿ä.

  ÀÏ´Ü if ¹®ÀÇ °æ¿ì °¢ °æ¿ì ¸¶´Ù °ªµéÀ» ºñ±³ ÇÕ´Ï´Ù. À§ °æ¿ì °ªÀ» 3 ¹ø ºñ±³Çϰڳ׿ä. ¿Ö³ÄÇϸé if °¡ 1 ¹ø, else if °¡ 2 ¹øÀÌ°í else ÀÇ °æ¿ì °ªÀÇ ºñ±³ ¾øÀÌ ÀÚµ¿À¸·Î 󸮵Ǵ °ÍÀ̹ǷΠÃÑ 3 ¹ø ºñ±³ÇÏ°Ô µË´Ï´Ù. Áï, if ¹®À» ÀÌ¿ëÇÏ¸é °¢ case ÀÇ °æ¿ì ºñ±³ÇÏ°Ô µÇ¹Ç·Î ÃÖ¾ÇÀÇ °æ¿ì ¸ðµç case ¿¡ ´ëÇØ °ªÀ» ºñ±³ÇÏ´Â ¿¬»ê (¾î¼Àºí¸®¾î¿¡¼­´Â CMP ¿¬»êÀ» ÇÕ´Ï´Ù.) À» ½ÃÇàÇÏ°Ô µË´Ï´Ù.

  ±×·±µ¥ switch ¹®Àº »ç¹µ ´Ù¸¨´Ï´Ù. switch ÀÇ °æ¿ì ³»ºÎÀûÀ¸·Î jump table À̶ó´Â °ÍÀ» »ý¼ºÇÕ´Ï´Ù. ÀÌ ¶§, jump table ÀÇ Å©±â´Â case ÀÇ °ªµé¿¡ µû¶ó ´Þ¶óÁö´Âµ¥, ¿¹¸¦ µé¾î¼­ ¾î¶² switch ¹®ÀÇ °æ¿ì case 1: ~ case 10: ±îÁö ÀÖ¾ú´Ù°í ÇսôÙ. ±×·¸´Ù¸é jump table ¿¡´Â °ªµéÀÌ 0 ºÎÅÍ 9 ±îÁö µé¾î°¡°Ô µË´Ï´Ù. ¿©±â¼­ ¿ì¸®´Â ¿Ö case °ª: ÇÒ ¶§, '°ª' ºÎºÐ¿¡ º¯¼ö°¡ À§Ä¡ÇÏ¸é ¾ÈµÇ´ÂÁö ¾Ë°Ô µË´Ï´Ù. jump table Àº ÇÁ·Î±×·¥ Ãʱ⿡ ÀÛ¼º µÇ±â ¶§¹®¿¡ ÀÌ¹Ì switch ¹®ÀÌ ½ÇÇàµÇ±â Àü¿¡ jump table ÀÌ ÀÛ¼ºµÇ°Ô µË´Ï´Ù. µû¶ó¼­, '°ª' ºÎºÐ¿¡ º¯¼ö°¡ µé¾î°¡°Ô µÇ¸é jump table ¿¡ ¹«¾ùÀÌ ¿ÃÁö ¾Ë ¼ö ¾øÀ¸¹Ç·Î º¯¼ö¸¦ »ç¿ëÇÏ¸é ¾ÈµÇ´Â °ÍÀÔ´Ï´Ù.

  ÀÌ °ªµéÀº ¹«¾ùÀ» ÀǹÌÇÏ³Ä¸é °¢ case º°·Î ¸í·ÉµéÀÌ À§Ä¡ÇÑ °÷ÀÇ ÁÖ¼Ò¸¦ °¡¸®Å°´Âµ¥ ¿¹¸¦ µé¾î¼­ 1 ÀÎ ÁöÁ¡À¸·Î Á¡ÇÁÇÏ°Ô µÇ¸é "¾ÆÀÌ ½Ã¿øÇØ" °¡ ³ª¿À°í 0 ÀÎ ÁöÁ¡À¸·Î Á¡ÇÁÇÏ°Ô µÇ¸é "¾ÆÀÌ ¸ÀÀÖ¾î" ¶ó°í Ãâ·ÂÇ϶ó´Â ³»¿ëÀÇ ¸í·É¹®µéÀÌ ³ª¿É´Ï´Ù. ÀÌÁ¦, º¯¼öÀÇ °ª¿¡ µû¶ó º¯¼ö°¡ 3 À̶ó¸é jump table ÀÇ 3 ¹ø° ¿ø¼Ò¸¦ ã¾Æ¼­ ±× °ª¿¡ ÇØ´çÇÏ´Â °÷À¸·Î Á¡ÇÁÇÏ°Ô µË´Ï´Ù.
(½ÇÁ¦·Î switch ¹®ÀÌ Ã³¸®µÇ´Â °úÁ¤Àº À̺¸´Ù ¾à°£ ´õ º¹ÀâÇÏÁö¸¸ ¾î¼Àºí¸®¾î¸¦ ¹è¿ìÁö ¾ÊÀº ÇöÀç »óȲÀ¸·Î½á´Â ÃÖ¼±À̶ó »ý°¢µË´Ï´Ù)

  µû¶ó¼­, switch ¹®À» ÀÌ¿ëÇϸé case ¿¡ µû¶ó CMP ¿¬»êÀÌ ´Ã¾î³ª´Â °ÍÀÌ ¾Æ´Ï¶ó jump table ÀÇ Å©±â¸¸ Ä¿Áú »Ó ¼º´É¿¡ À־´Â ÀüÇô ¿µÇâÀ» ¹ÞÁö ¾Ê°Ô µË´Ï´Ù.

  °á·ÐÀûÀ¸·Î À̾߱â ÇÏÀÚ¸é switch ¹®ÀÌ È¿°úÀûÀ¸·Î 󸮵DZâ À§Çؼ­´Â case ÀÇ '°ª' µéÀÇ Å©±â°¡ ±×´ÙÁö Å©Áö ¾Ê¾Æ¾ß ÇÏ°í, '°ª' µéÀÌ ¼øÂ÷ÀûÀ¸·Î Á¤·ÄµÇ¾î ÀÖ°í, ±× '°ª' ³¢¸®ÀÇ Â÷ÀÌ°¡ Å©Áö ¾Ê´Ù¸é ÃÖ°í·Î È¿À²ÀûÀÎ switch ¹®À» ÀÌ¿ëÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù

  Hit : 8578     Date : 2013/06/15 01:47



    
1281   ¿Ö ÇØÄ¿°¡ µÇ·Á´Â°¡[6]     dontknow
07/22 10285
1280   About Reversing     zen0c1de
07/19 10378
1279   [Reverse Engineering] ¸®¹ö½ÌÀÇ ±âÃÊ - ¹ü¿ë ·¹Áö½ºÅÍ¿Í Assembly(Pop,Mov)     zen0c1de
07/18 12652
1278   Á¶¾ðºÎŹµå¸³´Ï´Ù.¤¾(²À ÀоîÁÖ¼¼¿ä!!)[12]     dbevl
06/17 8121
1277   NET.UNITE¶ó´Â ±×·ì¿¡´ëÇؼ­(IT¿¡ °ü½ÉÀÌ ¸¹À¸½ÅºÐµéÀ̶ó¸é º¸½Ã±æ)[1]     difh1
06/15 7616
  c¾ð¾î 2 switch ±¸¹®     hacs98
06/15 8577
1275   c¾ð¾î for¹®      hacs98
06/15 12724
1274   ´ëÇб³ ÆÄÆ® °­Á Áú¹®ÇÕ´Ï´Ù.[2]     raikkonen04
06/05 7147
1273   Á¾·áÇÁ·Î±×·¥À» ¹èÄ¡ÆÄÀÏ·Î ¸¸µé¾î ºÃ½À´Ï´Ù[2]     kimthon
05/23 7502
1272   ´Ôµé c++ visual Àΰ¡ ÀÌ ÇÁ·Î±×·¥Á»[8]     chston10
05/14 7932
1271   ¸®´ª½º Apache ¼³Ä¡Çϱâ. centos6.4 - minimal // httpd-2.4.4 ¼Ò½º     nsh009
05/10 11248
1270   ¸®´ª½º Mysql ¼³Ä¡Çϱâ. centos6.4 - minimal // mysql 5.6.11 ¼Ò½º      nsh009
05/10 16662
1269   ¾î¼Àºí¸®¾î ÃÑÁ¤¸® °­ÁÂ[8]     gnsehfvlr
05/09 10656
1268   [Æß]¾Èµå·ÎÀ̵å 4.2ÀÇ ÃÊ°­·Â º¸¾È ½Ã½ºÅÛ[2]     gnsehfvlr
05/09 8075
1267   '13³â~'16³â Á¤º¸º¸¾È±â»ç ÃâÁ¦±âÁØ ¹× ¼¼ºÎÇ׸ñ[1]     gnsehfvlr
05/09 7735
1266   ÀÚ°ÝÁõ cissp ¼Ò°³ÀÔ´Ï´Ù.[2]     gnsehfvlr
05/09 7631
1265   ȨÆäÀÌÁö_º¸¾È°ü¸®_¸Å´º¾ó     gnsehfvlr
05/09 7411
1264   ¸®´ª½º ¼³Ä¡¹öÀü ¾Ë¾Æ³»´Â¹ý     gnsehfvlr
05/09 7905
1263   ·¹Áö½ºÆ®¸® ÇÙ½É ¸í·É¾î ¿ä¾à[1]     Ä«¸£ÆäÀÌ
05/08 8994
1262   Á¤º¸Ã³¸®±â´É»ç ¼ÒÇÁÆ®¿þ¾î °øÇÐ ¸ðÀ½Áý ÀÔ´Ï´Ù.[1]     Ä«¸£ÆäÀÌ
05/08 8095
[1]..[11][12][13][14][15] 16 [17][18][19][20]..[80]

Copyright 1999-2024 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org