¸®´ª½º ȯ°æ¿¡¼­ÀÇ C ÇÁ·Î±×·¡¹Ö : 8Àå µ¥ÀÌÅÍ Å¸ÀÔ
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

Contents

1 Data Types
2 Primitive Data Types
2.1 ¼ýÀÚÇü ¿ø½Ã µ¥ÀÌÅÍ Å¸ÀÔ
2.2 enumerated type
2.3 Pointer type
3 type casting - Çüº¯È¯
4 ¹®ÀÚ¿Í ¹®ÀÚ¿­ Ç¥Çö
5 typedef ¸¦ ÀÌ¿ëÇÑ Å¸ÀÔ ÀçÁ¤ÀÇ
6 ¹®Á¦

¿ì¸®´Â 5Àå¿¡¼­ µ¥ÀÌÅÍ Å¸ÀÔ¿¡ ´ëÇØ¼­ °£´ÜÈ÷ ¾Ë¾Æº¸¾Ò´Ù. ¿©±â¿¡¼­´Â ÀÌµé µ¥ÀÌÅÍ Å¸ÀÔ¿¡ ´ëÇØ¼­ Á»´õ ÀÚ¼¼È÷ ¾Ë¾Æº¸µµ·Ï ÇÒ°ÍÀÌ´Ù.

1 Data Types

¿ì¸®°¡ »ç¿ëÇÏ´Â µ¥ÀÌÅÍ´Â ÄÄÇ»ÅÍÀÇ ¸Þ¸ð¸®¿¡ ¿¬¼ÓµÈ ºñÆ®ÀÇ ³ª¿­·Î ÀúÀåÀÌ µÈ´Ù. ÀÌ·¯ÇÑ ºñÆ®ÀÇ ³ª¿­Àº ÄÄÇ»ÅÍÀÔÀå¿¡¼­´Â ¹®Á¦°¡ ¾È µÇ°ÚÁö¸¸ Àΰ£ÀÇ ÀÔÀå¿¡¼­´Â ¾Ë¾Æº¸±â Èûµé´Ù´Â ¹®Á¦°¡ ¹ß»ýÇÑ´Ù. ±×·¡¼­ µ¥ÀÌÅÍ Å¸ÀÔÀ» µÎ¾î¼­ Àΰ£ÀÌ Á»´õ ½±°Ô »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Çϰí ÀÖ´Ù.

µ¥ÀÌÅÍ Å¸ÀÔÀº ´ÙÀ½°ú °°Àº Ư¡À» °¡Áö°í ÀÖ´Ù.
  • µ¥ÀÌÅͰ¡ ¾î¶»°Ô Ç¥ÇöµÇ°í »ç¿ë µÉÁö¸¦ °áÁ¤ÇÑ´Ù.
  • µ¥ÀÌÅÍ Å¸ÀÔ¿¡ µû¶ó ÄÄÇ»ÅͰ¡ ¾î¶»°Ô µ¥ÀÌÅ͸¦ ´Ù·êÁö¸¦ ¾Ë·ÁÁÖ´Ù. (¼ýÀÚ·Î ´Ù·êÁö ¾Æ´Ï¸é ¹®ÀÚ·Î ´Ù·êÁö µî..)
  • ¸ðµç °ªÀº µ¥ÀÌÅÍ Å¸ÀÔ¿¡ ÀÇÇØ¼­ Ç¥ÇöµÉ ¼ö ÀÖ´Ù.

¿¹¸¦ µé¾î¼­ ¸Þ¸ð¸®¿¡ ´ÙÀ½°ú °°Àº ºñÆ®ÆÐÅÏÀÌ ÀúÀåµÇ¾î ÀÖ´Ù°í °¡Á¤Çغ¸ÀÚ.
  0000 0000 0110 0111 
 

ÀÌ °ªÀÌ ¾î¶»°Ô Ç¥ÇöµÉ±î ? À̰ÍÀº µ¥ÀÌÅÍ Å¸ÀÔÀ» ¾î¶»°Ô Á¤ÀÇÇÏ´À³Ä¿¡ µû¶ó ´Þ¶óÁø´Ù. ¸¸¾à µ¥ÀÌÅÍ Å¸ÀÔÀ» 'int·Î Çϱâ·Î Çß´Ù¸é ¼ýÀÚ 103À¸·Î Ç¥ÇöµÉ °ÍÀÌ´Ù. ±×·¯³ª ¹®ÀÚ¸¦ ÀúÀåÇÏ´Â char·Î Çϱâ·Î Çß´Ù¸é ¿µ¹®ÀÚ g·Î Ç¥ÇöÀÌ µÈ´Ù.

µ¥ÀÌÅÍ Å¸ÀÔÀº ÀÌ·¸°Ô Àΰ£ÀÇ ÀÔÀå¿¡¼­ ÄÄÇ»ÅÍ ¸Þ¸ð¸®¿¡ ÀúÀåµÈ µ¥ÀÌÅ͸¦ ¾î¶»°Ô ´Ù·ê °ÍÀÎÁö¸¦ °áÁ¤Çϱâ À§Çؼ­ »ç¿ëÀÌ µÈ´Ù.

¾Æ·¡ÀÇ Äڵ带 ½ÇÇà½ÃÄѺ¸±â ¹Ù¶õ´Ù.
#include <stdio.h> 
 
int main(int argc, char **argv) 
{ 
  int a = 103; 
  char b = 103; 
 
  printf("%d\n", a); 
  printf("%c\n", b); 
} 
 
¶È°°Àº 103Àε¥, ¼­·Î ´Ù¸£°Ô Ãâ·ÂµÇ´Â°É È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

2 Primitive Data Types

Àΰ£Àº ¸Å¿ì ´Ù¾çÇÑ ÇüÅÂÀÇ µ¥ÀÌÅ͸¦ ´Ù·ç±â¸¦ ¿øÇϰí, ±×·±ÀÏÀ» ÇÒ ¼ö ÀÖ´Â ÇÁ·Î±×·¥À» ¸¸µé¾î ³¾ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ´Ù·ç´Â µ¥ÀÌÅÍÀÇ ÇüŰ¡ ´Ù¾çÇÏ´Ï, µ¥ÀÌÅÍ Å¸ÀÔ ¿ª½Ã ´Ù¾çÇϸé ÁÁÀ» °ÍÀÌ´Ù. ±×·¯³ª ÄÄÇ»ÅÍ´Â ¸Å¿ì ´Ü¼øÇÑ ±â°è´Ù. ¾µµ¥¾øÀÌ µ¥ÀÌÅÍ Å¸ÀÔÀ» ÀÌ°Í Àú°Í ¸¸µé¸é, À̰ÍÀ» ´Ù·ç´Â ÄÄÇ»ÅÍ ¿ª½Ã ´Þ°¡¿öÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. ÇÁ·Î±×·¡¸Ó ¿ª½Ã °¢ µ¥ÀÌÅÍ Å¸ÀÔ¿¡ µû¸¥ °í·Á»çÇ×ÀÌ ´Ã¾î³ª´Ï ±ÇÀåÇÒ¸¸ÇÑ »çÇ×ÀÌ ¾Æ´Ï´Ù.

±×·¡¼­ µ¥ÀÌÅÍŸÀÔÀ» ´Ù·ç¾î¾ß ÇÏ´Â ÇÁ·Î±×·¡¹Ö ¾ð¾î´Â Primitive Data TypeÀ̶ó°í ºÒ¸®¿ì´Â ÃÖ¼ÒÇÑÀÇ ¹Ýµå½Ã ÇÊ¿äÇÑ µ¥ÀÌÅÍ Å¸ÀÔÀ» Áö¿øÇϰí ÀÖ´Ù. Primitive Data TypeÀº ¿ø½Ã µ¥ÀÌÅÍ Å¸ÀÔ À̶ó°í ºÎ¸£±âµµ ÇÑ´Ù.

°¢ ¿ø½Ã µ¥ÀÌÅÍ Å¸ÀÔÀº °íÀ¯ÀÇ Å©±â¸¦ °¡Áö°í ÀÖÀ¸¸ç, Ç¥ÇöÇÒ ¼ö ÀÖ´Â µ¥ÀÌÅÍÀÇ ÇѰ谡 Á¤ÀǵǾî ÀÖ´Ù. ´ÙÀ½Àº C ¾ð¾î¿¡¼­ Áö¿øÇÏ´Â ¿ø½Ã µ¥ÀÌÅÍ Å¸ÀÔ°ú Å©±â, µ¥ÀÌÅÍ ¹üÀ§¸¦ º¸¿©Áִ ǥ´Ù.

2.1 ¼ýÀÚÇü ¿ø½Ã µ¥ÀÌÅÍ Å¸ÀÔ

¼ýÀÚ¸¦ Ç¥ÇöÇϱâ À§Çؼ­ »ç¿ëµÇ´Â µ¥ÀÌÅÍ Å¸ÀÔÀÌ´Ù. Å©°Ô Á¤¼öÇü µ¥ÀÌÅ͸¦ Ç¥ÇöÇϱâ À§ÇÑ Á¤¼öÇü ¿ø½Ã µ¥ÀÌÅÍ Å¸ÀÔ°ú ºÎµ¿¼Ò¼ýÁ¡Çü ¿ø½Ã µ¥ÀÌÅÍ Å¸ÀÔÀ¸·Î ³ª´­ ¼ö ÀÖ´Ù.
  • Á¤¼öÇü ¿ø½Ã µ¥ÀÌÅÍ Å¸ÀÔ
    char 1byte -128 127
    short 2byte -32768 32767
    long int 4byte 2,147,483,648 2,147,483,647
    long long int 8byte 9,223,372,036,854,775,808 9,223,372,036,854,775,807

À̵é Á¤¼öÇü µ¥ÀÌÅÍ Å¸ÀÔµéÀº signedºñÆ®¶ó´Â °ÍÀ» °¡Áö°í À־, À½¼ö±îÁö Ç¥ÇöÇÒ°ÍÀÎÁö¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. À½¼ö±îÁö Ç¥ÇöÇÒ °Å¶ó¸é signed¸¦ ¾ç¼ö¸¸ Ç¥ÇöÇҰŶó¸é unsigned¸¦ ŸÀÔÀÇ ¾Õ¿¡ ºÙ¿©ÁØ´Ù. µû·Î ºÙ¿©ÁÖÁö ¾Ê¾Ò´Ù¸é signed °¡ ºÙÀº°É·Î ÇØ¼®À» ÇÑ´Ù. Áï À§ÀÇ µ¥ÀÌÅÍ Å¸ÀÔÀº ½ÇÁ¦·Î´Â signed char, signed short, signed long int, signed long long int¿Í µ¿ÀÏÇÏ´Ù.

unsigned¸¦ ¸í½ÃÇÏ°Ô µÇ¸é ¾çÀÇ Á¤¼ö¸¸ Ç¥ÇöÇÏ°Ô µÈ´Ù. À½ÀÇ Á¤¼ö¸¦ Ç¥ÇöÇÒ Çʿ䰡 ¾øÀ¸´Ï ±×¸¸Å­ ¾ç¼ö ÂÊÀ¸·Î Ç¥Çö¹üÀ§°¡ ´Ã¾î³¯ °ÍÀÌ´Ù. unsigned char À̶ó¸é 255, unsigned long int ¶ó¸é 4,294,967,295 °¡ µÈ´Ù.

  • ºÎµ¿¼Ò¼ýÁ¡Çü ¿ø½Ã µ¥ÀÌÅÍ Å¸ÀÔ
    float 4byte +/- 10E-37 +/- 10E38
    double 8byte +/- 10E-307 +/- 10E308

2.2 enumerated type

ÀϹÝÀûÀ¸·Î enumerated ŸÀÔÀº ¼ýÀÚ·Î ³ª¿­µÈ Ä«Å×°í¸® °°Àº µ¥ÀÌÅ͸¦ ¸¸µé±â À§Çؼ­ »ç¿ëÇÑ´Ù. C¿¡¼­´Â enumÀ» ÀÌ¿ëÇØ¼­ enumerated ŸÀÔÀÇ µ¥ÀÌÅ͸¦ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù.
enum cardsuit { 
   CLUBS, 
   DIAMONDS, 
   HEARTS, 
   SPADES 
}; 
 
ÀÌÁ¦ enum À» ÀÌ·ç´Â °¢°¢ÀÇ ¿ä¼ÒµéÀº ¼ýÀÚ 0,1,2... ·Î Â÷·Ê´ë·Î ´ëÀÀµÇ°Ô µÈ´Ù. ´ÙÀ½ÀÇ ÇÁ·Î±×·¥À» ½ÇÇà½ÃÄÑ º¸ÀÚ.
#include <stdio.h> 
enum cardsuit { 
  CLUBS, 
  DIAMONDS, 
  HEARTS, 
  SPACES 
}; 
int main() 
{ 
  printf("Card CLUBS is %d\n", CLUBS); 
  printf("Card DIAMONDS is %d\n", DIAMONDS); 
  printf("Card HEARTS is %d\n", HEARTS); 
  printf("Card SPACES is %d\n", SPACES); 
} 
 

´ÙÀ½°ú °°Àº °á°ú¸¦ È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
# ./enum 
Card CLUBS is 0 
Card DIAMONDS is 1 
Card HEARTS is 2 
Card SPACES is 3 
 

±×·¸Áö¸¸ CLUBS °¡ 0ÀÌ ¾Æ´Ñ ´Ù¸¥ ¼ö·Î ´ëÀÀµÇ¾î¾ß ÇÒ °æ¿ìµµ »ý±æ °ÍÀÌ´Ù. ±×·² ¶©, ÇÊ¿äÇÑ °ªÀ» ´ëÀÔ½ÃÄÑ ÁÖ¸é µÈ´Ù. Áï °ªÀ» ¸í½ÃÇÏÁö ¾ÊÀ¸¸é 0ºÎÅÍ ½ÃÀÛÇØ¼­ 1¾¿ Áõ°¡Çϰí, °ªÀ» ¸í½ÃÇÏ¸é ¸í½ÃµÈ °ªÀ» ½ÃÀÛÀ¸·Î 1¾¿ Áõ°¡ÇÏ´Â °ÍÀ¸·Î º¸¸é µÈ´Ù.

¹®Á¦
cardsuit¸¦ ´ÙÀ½°ú °°ÀÌ Á¤ÀÇ ÇßÀ» ¶§, ¾î¶² °ªÀÌ Ãâ·ÂµÉÁö »ý°¢ÇØ º¸¶ó.

enum cardsuit { 
  CLUBS = 1, 
  DIAMONDS, 
  HEARTS = 100, 
  SPACES 
}; 
 

2.3 Pointer type

ÄÄÇ»ÅÍ´Â °è»êÀ» Çϱâ À§ÇÑ ±â°è´Ù. À̶§ °è»ê¿¡ »ç¿ëµÉ ¸ðµç µ¥ÀÌÅÍ´Â ÀÏ´Ü ¸Þ¸ð¸®·Î ÀÐÇôÁ®¼­ ÇÊ¿äÇÑ °è»êÀ» ÇÏ°Ô µÈ´Ù. ¿¹¸¦ µé¾î Çϵåµð½ºÅ©¿¡ A ¶ó´Â ¹®¼­°¡ ÀÖ´Ù°í °¡Á¤ÇØ º¸ÀÚ. ÀÌ ¹®¼­¸¦ ÆíÁýÇϱâ À§ÇÑ ÇÁ·Î±×·¥À» °¡µ¿½Ã۸é, ÇÁ·Î±×·¥Àº Çϵåµð½ºÅ©¿¡ ÀÖ´Â ¹®¼­¸¦ ¸ðµÎ Àо ÄÄÇ»ÅÍÀÇ ¸Þ¸ð¸®·Î ºÒ·¯µéÀÎ ´ÙÀ½ ÇÊ¿äÇÑ ÀÏÀ» ÇÏ°Ô µÈ´Ù. ´Ù¸¥ ¸ðµç ¿¬»êµé¿ª½Ã ¸¶Âù°¡Áö´Ù.

±×·¸´Ù¸é ¹®Á¦°¡ ¹ß»ýÇÑ´Ù. ÄÄÇ»ÅÍ¿¡´Â ¿©·¯°³ÀÇ ÇÁ·Î±×·¥ÀÌ ¶° ÀÖÀ»Å×´Ï, °¢°¢ÀÇ ÇÁ·Î±×·¥ÀÌ »ç¿ëÇÏ´Â µ¥ÀÌÅͰ¡ ¸Þ¸ð¸®ÀÇ ¿©±âÀú±â ÀúÀåµÇ¾î ÀÖÀ» °ÍÀÌ´Ù. À̶§ ÇÁ·Î±×·¥Àº ÀÚ½ÅÀÌ »ç¿ëÇÒ µ¥ÀÌÅͰ¡ ¸Þ¸ð¸®»óÀÇ ¾î´À À§Ä¡¿¡ ÀÖ´ÂÁö ¾Ë°í ÀÖ¾î¾ß ÇÑ´Ù.

À̸¦ À§Çؼ­ ¸Þ¸ð¸®¿¡´Â ¾Æ·¡ ±×¸²°ú °°ÀÌ ÁÖ¼Ò °ªÀÌ ºÎ¿©µÇ¾î ÀÖ´Ù.

pointer.png

ÇÁ·Î±×·¥Àº ÀÌ ±â¾ï°ªÀ» ±â¾ïÇØ¼­ µ¥ÀÌÅÍÀÇ À§Ä¡¸¦ Á¤È®È÷ ã¾Æ³»¾î¼­ Àоî¿À°Ô µÇ´Â °ÍÀÌ´Ù. Pointer´Â ÀÌ·¯ÇÑ ÁÖ¼Ò°ªÀ» ÀúÀåÇÏ´Â µ¥ÀÌÅÍ Å¸ÀÔÀÌ´Ù.

´Ù¸¥ µ¥ÀÌÅÍ Å¸ÀÔµéÀÌ ±×·¸µíÀÌ pointerµµ °íÀ¯ÀÇ Å©±â¸¦ °¡Áö°í ÀÖ´Ù. pointer µ¥ÀÌÅÍ Å¸ÀÔÀÇ Å©±â´Â 4byteÀÌ´Ù. ¸Þ¸ð¸®»óÀÇ ÁÖ¼Ò¿¡´Â ¸¶À̳ʽº °ªÀÌ Çʿ䰡 ¾øÀ¸¹Ç·Î 0 - 4,294,967,295ÀÇ ¼ýÀÚ°¡ ÀúÀåµÈ´Ù. 32bit ÄÄÇ»ÅÍ¿¡ »ç¿ë°¡´ÉÇÑ ¸Þ¸ð¸®ÀÇ ÃÑÅ©±â°¡ 4Giga´Ù ¶ó´Â ¾ê±â°¡ ¿©±â¿¡¼­ ³ª¿Â´Ù. °¡¸®Å³¼ö ÀÖ´Â ¼ýÀÚÀÇ ¹üÀ§°¡ 4,294,967,295 (¾à 4giga)À̹ǷÎ, À̸¦ ÃʰúÇÑ ¿µ¿ª¿¡ ÀúÀåµÈ µ¥ÀÌÅÍ´Â Àоî¿Ã ¼ö°¡ ¾ø±â ¶§¹®ÀÌ´Ù.

ÀÌ´Â C ¿Í °°Àº ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡µµ ±×´ë·Î Àû¿ëµÈ´Ù. Æ÷ÀÎÅÍÀÇ Å©±â°¡ 4byte ÀÌ´Ï, ÃÖ´ë´Ù·ê ¼ö ÀÖ´Â ¸Þ¸ð¸®ÀÇ Å©±â°¡ 4Giga·Î Á¦ÇÑÀÌ µÈ´Ù. ¹°·Ð ¿©·¯ºÐÀÌ 64bit ÄÄÇ»ÅÍ¿Í ¿î¿µÃ¼Á¦ ±×¸®°í ÄÄÆÄÀÏ·¯¸¦ »ç¿ëÇÑ´Ù¸é Å×¶ó byte±ÞÀÇ µ¥ÀÌÅ͸¦ ´Ù·ê ¼ö ÀÖ´Ù. 64bit ÄÄÇ»ÅͰ¡ ´ë¿ë·® µ¥ÀÌÅÍ Ã³¸®¿¡ À¯¸®ÇÏ´Ù´Â ¾ê±â°¡ ³ª¿À´Â ÀÌÀ¯´Ù.

Æ÷ÀÎÅÍ´Â ÀÌÂë¿¡¼­ ³¡³»µµ·Ï ÇϰڴÙ. Æ÷ÀÎÅÍ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº µû·Î ÇÑÀå Á¤µµ¸¦ ÇÒ¾ÖÇØ¼­ ÀÚ¼¼È÷ ´Ù·çµµ·Ï ÇϰڴÙ.

3 type casting - Çüº¯È¯

¾Æ·¡ ÇÁ·Î±×·¥À» ÄÄÆÄÀÏ ÈÄ ½ÇÇà½ÃÄÑ º¸ÀÚ.
#include <stdio.h> 
 
int main(int argc, char **argv) 
{ 
  unsigned char ch = 'c'; 
 
  printf("%c\n", ch); 
  ch = ch+1; 
  printf("%c\n", ch); 
  ch = ch+1; 
  printf("%c\n", ch); 
} 
 
°á°ú·Î c d e °¡ Ãâ·ÂµÉ °ÍÀÌ´Ù.

ÀÌ»óÇϱº. ºÐ¸íÈ÷ µÎ°³´Â ¼­·Î ´Ù¸¥ µ¥ÀÌÅÍ Å¸ÀÔÀε¥, ´õÇϱⰡ µÇ´Â±º ?

¾Õ¼­ ¾ð±ÞÇßÁö¸¸, µ¥ÀÌÅÍÇüÀ̶õ Ç¥Çö¹æ½Ä¿¡ µû¸¥ °ÍÀÏ »ÓÀÌ´Ù. ÄÄÇ»ÅÍ ÀÔÀå¿¡¼­´Â ¸ðµÎ°¡ ºñÆ®ÀÏ »ÓÀÌ´Ù. Áï ch+1Àº ÄÄÇ»ÅÍ ÀÔÀå¿¡¼­ ´ÙÀ½°ú °°ÀÌ °è»êÀÌ µÈ´Ù.
                               0110 0011   = 'a' 
 0000 0000 0000 0000 0000 0000 0000 0001   = '1' 
 ========================== 
 0000 0000 0110 0100   = 'b' 
 
¸¸¾à printf("%d\n" ch+1) À» ÇÑ´Ù¸é, 100 ÀÌ Ãâ·ÂµÉ °ÍÀÌ´Ù. ºñÆ®ÆÐÅÏÀ» ¼ýÀڷΠǥÇöÇϵµ·Ï Ç¥Çö¹æ½ÄÀ» ¹Ù²å±â ¶§¹®ÀÌ´Ù.

ÀÌ·¸°Ô ¸ðµÎ µ¿ÀÏÇÑ ºñÆ®ÀÏ »ÓÀÓÀ¸·Î ¼­·Î ´Ù¸¥ ŸÀÔ°£ÀÇ °è»êÀÌ °¡´ÉÇØÁø´Ù. ±×·¯³ª ÀÌ°Ç ¾îµð±îÁö³ª °¡´ÉÇÏ´Ù ÀÏ»Ó ½ÇÁ¦·Î´Â ÀǵµÇÏÁö ¾Ê´Â ´Ù¾çÇÑ ¹®Á¦°¡ ¹ß»ýÇÒ ¼ö ÀÖ´Ù.

  • µ¥ÀÌÅÍŸÀÔÀÇ Å©±â¿¡ µû¸¥ ¹®Á¦
    µ¥ÀÌÅÍ Å¸ÀÔÀº ¼­·Î ´Ù¸¥ Å©±â¸¦ °¡Áö°í ÀÖ´Ù. À§ÀÇ Äڵ忡¼­ ch ¿¡ 1000À» ´õÇÏ¸é ¾î¶»°Ô µÉ±î. 1099°¡ ³ª¿À±æ ¿¹»óÇÒ ¼ö ÀÖ°ÚÁö¸¸ chÀÇ Å×ÀÌÅÍ Å¸ÀÔÀÎ char´Â 1byteÀÇ Å©±â·Î 255±îÁö¸¸ Ç¥ÇöÀÌ °¡´ÉÇÏ´Ù. ¶§¹®¿¡ µ¥ÀÌÅÍ ÀúÀå°ø°£À» ÃʰúÇÏ°Ô µÉ °ÍÀÌ´Ù. ½ÇÁ¦·Î´Â 1byteÀÇ »óÀ§ ºñÆ®´Â ¹ö·ÁÁö°Ô µÈ´Ù. °í·Î 0-255±îÁöÀÇ °ªÀÌ Ãâ·ÂÀÌ µÉ°ÍÀÌ´Ù. ¹¹.. °ªÀÌ 255¸¦ ÃʰúÇÏÁö ¾Ê´Â ¹üÀ§¿¡¼­ ¿¬»êÀ» ÇÑ´Ù¸é ¹®Á¦°¡ ¾ø±â´Â ÇϰÚÁö¸¸ ½Ç¼ö·Î ¹®Á¦°¡ ¹ß»ýÇÒ ¼ÒÁö°¡ ´ÙºÐÇÏ´Ù.

  • ´Ù¸¥ µ¥ÀÌÅÍ Å¸ÀÔ³¢¸®¶óµµ ÁÖÀÇÇØ¼­ ÇÁ·Î±×·¡¹ÖÀ» ÇÏ¸é ¹®Á¦ ¾ø°ÚÁö¸¸ °¡´ÉÇϸé, ŸÀÔÀ» ¸ÂÃ߾ °è»êÀ» ÇÏ´Â°Ô ÁÁ´Ù.

  • signed bit ¹®Á¦
    Á¤¼öÇü µ¥ÀÌÅÍ Å¸ÀÔÀº signed bit ¸¦ °¡Áö°í À־ À̰ɷΠ¾ç¼öÀÎÁö À½¼öÀÎÁö¸¦ ÆÇ´ÜÇÏ°Ô µÈ´Ù. ´ÙÀ½ÀÇ Äڵ带 È®ÀÎÇØ º¸ÀÚ.

    #include <stdio.h> 
     
    int main(int argc, char **argv) 
    { 
      unsigned int i = 100; 
     
      if (i < -10) 
      { 
        printf("Large\n"); 
      } 
    } 
     
    »ó½ÄÀûÀ¸·Î 100 Àº -10º¸´Ù Å©±â ¶§¹®¿¡ if¹®ÀÇ ºí·°Àº ½ÇÇàµÇÁö ¾Ê¾Æ¾ß °ÚÁö¸¸, ÄÄÆÄÀÏÇØ¼­ ½ÇÇà½ÃÄÑ º¸¸é ºí·°¹®ÀÌ ½ÇÇàÀÌ µÇ´Â°É ¾Ë ¼ö ÀÖ´Ù. ÀÌ´Â i °¡ unsigned ÇüÀ¸·Î -10 À» unsigned ÇüÀ¸·Î º¸°í ºñ±³¸¦ Çϱ⠶§¹®ÀÌ´Ù. -10ÀÌ unsigned ÇüÀÌ µÇ¸é 4,294,967,285 À¸·Î Ç¥ÇöÀÌ µÈ´Ù. À̸¦ ÀÌÇØÇϱâ À§Çؼ­´Â 2ÀÇ º¸¼ö¸¦ ÅëÇÑ singed µ¥ÀÌÅÍ Ã³¸®¿¡ ´ëÇØ¼­ ¾Ë°í ÀÖ¾î¾ß Çϴµ¥, 5Àå µ¥ÀÌÅÍ¿Í ºñÆ®¹®¼­¸¦ Àо±â ¹Ù¶õ´Ù.

    ÀÌ ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ­ Çüº¯È¯À» ¼öÇàÇÑ´Ù. À§ÀÇ ÇÁ·Î±×·¥ÀÇ °æ¿ì ¹®Á¦¸¦ ÇÇÇØ°¡´Â °¡Àå ÁÁÀº ¹æ¹ýÀº i¸¦ signed ÇüÀ¸·Î ¼±¾ðÇÏ´Â°Ô µÉ°ÍÀÌ´Ù. ±×·¯³ª ºÒ°¡ÇÇ ÇÏ°Ô unsigned ÇüÀ» °íÁýÇØ¾ß ÇÒ °æ¿ì°¡ ¹ß»ýÇÑ´Ù. ±×¶§´Â casting(Çüº¯È¯)¿¬»êÀÚ¸¦ ÅëÇØ¼­ Çüº¯È¯À» Çϵµ·Ï ÇÑ´Ù.

  • if ((signed)i < -10) 
    { 
    ... 
    } 
     
    ÀÌÁ¦ Á¦´ë·Î µÇ´Â°É È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¶§´Â µ¥ÀÌÅͰ¡ ¾îµð¿¡ ¾²ÀÏ °ÍÀÎÁö¸¦ ¸íÈ®È÷ ÇØ¼­, ±×¿¡ ¸Â´Â µ¥ÀÌÅÍ Å¸ÀÔÀ» ÁöÁ¤ÇØ Áà¾ß ÇÑ´Ù. ±×·¸Áö¸¸ »ç¶÷ÀÌ´Ù º¸´Ï, À§¿¡¼­ ó·³ »ç¼ÒÇÑ ½Ç¼ö¸¦ Çϱ⵵ ÇÑ´Ù. ¹®Á¦´Â ÀÌ·± ÇÁ·Î±×·¥µµ ¹®Á¦ ¾øÀÌ ÄÄÆÄÀÏÀÌ µÈ´Ù´Â °ÍÀÌ´Ù. °á±¹ ÇÁ·Î±×·¥ÀÌ ½ÇÇàÇÏ´Â µµÁß¿¡ ¹®Á¦¸¦ ÀÏÀ¸Å°°Ô µÉ °ÍÀÌ´Ù. ´ÙÇàÈ÷ gcc ÄÄÆÄÀÏ·¯´Â ÄÄÆÄÀÏ ¿É¼ÇÀ» ÅëÇØ¼­ Àú·¯ÇÑ ¹®Á¦¸¦ »çÀü¿¡ Àâ¾Æ³¾ ¼ö ÀÖ°Ô Çϰí ÀÖ´Ù. À§ ÇÁ·Î±×·¥À» type.c·Î ÀúÀåÇÏ°í ¾Æ·¡¿Í °°Àº ¿É¼ÇÀ» ÁÖ°í ÄÄÆÄÀÏ ÇØº¸ÀÚ.
# gcc -W -Wall -o type type.c 
... 
type.c:7: warning: comparison between signed and unsigned 
... 
 
comparison between signed and unsigned¿Í °°Àº °æ°í¸Þ½ÃÁö¸¦ Ãâ·ÂÇÔÀ» ¾Ë ¼ö ÀÖ´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº ¸®ÆÑÅ丵 : ¸ðµç °æ°í¸Þ½ÃÁö¸¦ Á¦°ÅÇÏ¶ó ¹®¼­¸¦ Àо±â ¹Ù¶õ´Ù. ¾ÆÁ÷ Àб⠹ö°Ì´Ù¸é, ±×³É ´ëÃæ Àú·±°Ô ÀÖ³ªº¸´Ù ÇÏ´Â ¼öÁØ¿¡¼­ ÀоîµÎ¾îµµ µµ¿òÀÌ µÉ °ÍÀÌ´Ù.

4 ¹®ÀÚ¿Í ¹®ÀÚ¿­ Ç¥Çö

µ¥ÀÌÅÍ´Â Å©°Ô ¹®ÀÚ¿Í ¼ýÀÚ·Î ÀÌ·ç¾îÁ® ÀÖÀ½À» ¾Ë°í ÀÖ´Ù. ±×·±µ¥ Á¤ÀÛ ¹®ÀÚ¿Í ¹®ÀÚ¿­À» Ç¥ÇöÇϱâ À§ÇÑ µ¥ÀÌÅÍ Å¸ÀÔÀ» ´Ù·é°Å °°Áö¸¦ ¾Ê´Ù. ÀÌ¿¡ ´ëÇØ¼­ ¾ê±âÇØ º¸°íÀÚ ÇÑ´Ù.

C ¾ð¾î¿¡¼­ ¹®ÀÚ¸¦ À§ÇÑ µ¥ÀÌÅÍ Å¸ÀÔÀ¸·Î´Â char µ¥ÀÌÅÍ Å¸ÀÔÀ» »ç¿ëÇÑ´Ù. char ´Â 1byte 256ÀÇ Å©±â¸¦ °¡Áö´Âµ¥, 1byte ¹®ÀÚ±ÇÀÇ ¿µ¾î¿Í ¼ö½Ê°³ÀÇ Æ¯¼ö¹®ÀÚ¸¦ ÃæºÐÈ÷ Ç¥ÇÑÇÒ ¼ö Àִ¹٠char¸¦ ¹®ÀÚ¸¦ ÀúÀåÇϱâ À§ÇÑ µ¥ÀÌÅÍ Å¸ÀÔÀ¸·Î »ç¿ëÇϰí ÀÖ´Ù.

ÄÄÇ»ÅÍ¿¡¼­ Ç¥ÇöµÇ´Â ¹®ÀÚ´Â 0¿¡¼­ 255±îÁöÀÇ °¢ Å©±â¿¡ ´ëÀÀµÇ´Â ¹®ÀÚµéÀÌ Ç¥ÁØÀ¸·Î Á¤ÀǵǾî ÀÖ´Ù. °¢ °ª¿¡ ´ëÀÀµÇ´Â ¹®ÀÚ´Â ASCII Å×À̺í·Î Á¤¸®µÇ¾î ÀÖ´Ù.

http://www.joinc.co.kr/albums/album01/age.gif

http://www.joinc.co.kr/albums/album01/agf.gif

±×·¯³ª ASCII Å×ÀÌºí¸¸ °¡Áö°í´Â ÀϺ»¾î, ÇѱÛ, Áß±¹¾î¿Í °°Àº 2byte ¹®Àڴ ǥÇöÇÒ ¼ö ¾ø´Ù. 2byte ¹®ÀÚ´Â char¸¦ 2°³ ÀÌ»ó »ç¿ëÇØ¼­ ÀúÀåÇØ¾ß ÇÑ´Ù.

ÀÌÁ¦ ¸¶Áö¸·À¸·Î ¹®ÀÚ¿­ÀÌ ³²¾Ò´Ù. C´Â ¹®ÀÚ¿­À» À§ÇÑ µ¥ÀÌÅÍ Å¸ÀÔÀ» °¡Áö°í ÀÖÁö ¾Ê´Ù. C¿¡¼­ ¹®ÀÚ¿­À» ó¸®Çϱâ À§Çؼ­´Â ¹è¿­À» »ç¿ëÇØ¾ß¸¸ ÇÑ´Ù. À̰ÍÀº ¿ø½Ã µ¥ÀÌÅÍ Å¸ÀÔÀ» ¿©·¯°³¸¦ Æ÷ÇÔÇϰí ÀÖ´Â µ¥ÀÌÅÍ ±¸Á¶´Ù. ¿¹¸¦ µé¾î ¹®ÀÚ¿­Àº char¸¦ ¿©·¯°³ Æ÷ÇÔÇÒ ¼ö ÀÖ´Â µ¥ÀÌÅÍ ±¸Á¶¸¦ ÀÌ¿ëÇϸé Ç¥ÇöÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¹è¿­Àº ´ÙÀ½Àå¿¡¼­ ÀÚ¼¼È÷ ´Ù·çµµ·Ï ÇϰڴÙ.

5 typedef ¸¦ ÀÌ¿ëÇÑ Å¸ÀÔ ÀçÁ¤ÀÇ

µ¥ÀÌÅÍ Å¸ÀÔÀº ŸÀÔ¿¡ ¸Â´Â °íÀ¯ÇÑ À̸§À» °¡Áö°í »ç¿ëÇÏ°Ô µÈ´Ù. ±×·±µ¥ ŸÀÔÀÇ À̸§ÀÌ ³Ê¹« ±æ °æ¿ì, À̸¦ ÀÌ¿ëÇØ¼­ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ °æ¿ì ºÒÆíÇÑ Á¡ÀÌ ¹ß»ýÇÑ´Ù. ´ÙÀ½ÀÇ °æ¿ì¸¦ º¸ÀÚ.
int main() 
{ 
  unsigned long int a; 
  unsigned long int b; 
  unsigned long long c; 
  ... 
} 
 
»ç¿ëÇϴµ¥ ¹®Á¦´Â ¾ø°ÚÁö¸¸, Àú·¸°Ô ±ä ŸÀÔÀÇ º¯¼ö°¡ ¿©±âÀú±â¿¡ »ý¼ºµÈ´Ù¸é °¡µ¶¼ºÀÌ ¶³¾îÁö´Â ÁöÀúºÐÇÑ Äڵ尡 ¸¸µé¾îÁú °¡´É¼ºÀÌ ÀÖ´Ù. ÀÌ·²°æ¿ì typedef ¸¦ ÀÌ¿ëÇØ¼­ ±âÁ¸ÀÇ µ¥ÀÌÅÍ Å¸ÀÔÀ» ´Ù¸¥ ªÀº À̸§À¸·Î ÀçÁ¤ÀÇ ÇØ¼­ »ç¿ëÇÒ ¼ö ÀÖ´Ù. typedef´Â ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
typedef [¿ø·¡ µ¥ÀÌÅÍ Çü] [ÀçÁ¤ÀÇµÉ µ¥ÀÌÅÍ Å¸ÀÔÀÇ À̸§] 
 
typedef¸¦ ÀÌ¿ëÇϸé, ´ÙÀ½°ú °°ÀÌ Äڵ带 ±ò²ûÇÏ°Ô ¸¸µé ¼ö ÀÖ´Ù.
typedef unsigned long int uint; 
typedef unsigned long long ulint; 
 
int main() 
{ 
    uint a; 
    uint b; 
    ulint c; 
} 
 

6 ¹®Á¦

  1. char µ¥ÀÌÅÍ Å¸ÀÔÀ» ÀÌ¿ëÇØ¼­ hello world¸¦ È­¸é¿¡ Ãâ·ÂÇØ º¸ÀÚ.
    • char¸¦ ¿©·¯°³ ½á¾ßÇÔ.
    • printf ¸¦ ÅëÇØ¼­ Ãâ·ÂÇÒ ¼ö ÀÖÀ½.
  2. char µ¥ÀÌÅÍ Å¸ÀÔÀ» ÀÌ¿ëÇØ¼­ hello world¸¦ Ãâ·ÂÇØº¸ÀÚ. ´Ü Á¤¼öÇü ¼ýÀÚ¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù.
    • ASCII Å×À̺íÀ» ÀÌ¿ëÇÏ¸é µÊ.
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.