ÀÚ·áÇü


º¯¼ö³ª »ó¼ö¸¦ »ç¿ëÇÒ ¶§¿¡´Â »çÀü¿¡ º¯¼ö¿Í »ó¼öÀÇ ÇüÅÂ, ¹üÀ§, ºÎÈ£ À¯¹« µîÀ» °í·ÁÇØ¾ß ÇÑ´Ù.  À̵éÀº º¯¼ö¿Í »ó¼öÀÇ ÀÚ·áÇü(Data Type)¿¡ ÀÇÇØ °áÁ¤µÈ´Ù.  ºñ´Ü º¯¼ö, »ó¼öÀÇ °æ¿ì»Ó¸¸ ¾Æ´Ï¶ó ÇÔ¼ö, ¿¬»ê½ÄÀÇ °æ¿ì¿¡µµ ÀÚ·áÇüÀ» °¨¾ÈÇØ¾ß Çϴµ¥, º¯¼ö¿Í »ó¼öÀÇ ÀÚ·áÇü¿¡ Àͼ÷ÇØ Áö¸é ÇÔ¼ö, ¿¬»ê½ÄÀÇ ÀÚ·áÇü¿¡µµ ÀÚµ¿ÀûÀ¸·Î Àͼ÷ÇØÁø´Ù

ÀÚ·áÇü °³¿ä | ºÎÈ£Á¤¼öÇü | ºñºÎÈ£Á¤¼öÇü | ¹®ÀÚ ÀÚ·áÀÇ Ã³¸® | ½Ç¼öÇü



ÀÚ·áÇü °³¿ä

(1) ÀÚ·áÇüÀ̶õ?

¸» ±×´ë·Î ÀÚ·áÀÇ ÇüŸ¦ ¸»Çϸç, º¯¼ö. »ó¼öÀÇ ´ÙÀ½ »çÇ×Àº ÀÚ·áÇü¿¡ ÀÇÇØ °áÁ¤µÈ´Ù.

ÇüÅ : Á¤¼öÀΰ¡ ¼Ò¼öÁ¡¼ö(½Ç¼ö)Àΰ¡ ...?

¹üÀ§ : -32768~32767 »çÀÌÀΰ¡, 32768 ÀÌ»óµµ »ç¿ëµÇ´Â°¡ ...?

ºÎÈ£ : À½¼öµµ »ç¿ëµÇ´Â°¡ ¾Æ´Ï¸é ¾ç¼ö¸¸ »ç¿ëµÇ´Â°¡?

À§ÀÇ »çÇ×À» °í·ÁÇÏÁö ¾Ê°í º¯¼ö³ª »ó¼ö(ƯÈ÷ º¯¼ö)¸¦ »ç¿ëÇϸé ÇÁ·Î±×·¥ ½ÇÇàÀÌ ¾û¶×ÇÏ°Ô µÇ¾î ¹ö¸®±âµµ ÇÑ´Ù.  ´ÙÀ½ ÇÁ·Î±×·¥À» º¸±â ¹Ù¶õ´Ù.  ÀÌ´Â n=123 ÀÌÈÄ 10°³ÀÇ Á¤¼ö habÀ» ±¸ÇϰíÀÚ ÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù.

#include <stdio.h>

void main()
{
    char n;
    int i, hab=0;

    n=123;
    for (i=1; i<=10; i++)
    {
        printf("%d", n);
        hab += n++;
    }

    printf("¡¬n¡¬nhab : %d", hab);
}

123 ÀÌÈÄÀÇ 10°³ÀÇ Á¤¼ö(123~132)ÀÇ ÇÕÀº 1275Àε¥ ÀüÇô ¾û¶×ÇÑ °ªÀÎ -5°¡ Ç¥½ÃµÇ¾î ÀÖÀ» °ÍÀÌ´Ù(ÇÕÀº ±¸ÇÏ´Â for ·çÇÁ¿¡´Â ¾Æ¹«·± ¹®Á¦°¡ ¾ø´Ù).  ÀÌ´Â char ÇüÀÇ °æ¿ì¿¡´Â -128~127 »çÀÌÀÇ °ª¸¸ °¡Áú ¼ö Àִµ¥ À§ ÇÁ·Î±×·¥¿¡¼­´Â 127À» ÃʰúÇÏ´Â °ªÀ» »ç¿ëÇÏ·Á Çϰí Àֱ⠶§¹®ÀÌ´Ù.  À§ ÇÁ·Î±×·¥ÀÇ ½ÇÇà °á°ú¿¡¼­ È®ÀÎÇÒ ¼ö ÀÖµíÀÌ charÇüÀÇ °æ¿ì n=127ÀÏ ¶§ nÀ» 1Áõ°¡½Ã۸é(n++) n=-128·Î µÈ´Ù.

¡ºchar n;¡»À»¡ºunsigned char n:¡»À¸·Î ¹Ù²Ù¸é 123~132ÀÇ habÀÌ Á¤È®È÷ ±¸ÇØÁø´Ù.

ÇÁ·Î±×·¥ÁßÀÇ ¹®¹ýÀûÀÎ ¿À·ù´Â ¿ëÀÌÇÏ°Ô ¹ß°ßµÇ³ª, ÇÁ·Î±×·¥ÀÌ ±ä °æ¿ì¿¡´Â ÀÌ¿Í °°Àº ¿À·ù´Â ½±°Ô ¹ß°ßµÇÁö ¾Ê´Â´Ù.  µû¶ó¼­ ÀÚ·á(º¯¼ö)¸¦ »ç¿ëÇÏ·Á¸é »çÀü¿¡ º¯¼öÀÇ
¹üÀ§¿Í ºÎÈ£À¯¹«, ÇüŸ¦ °¨¾ÈÇÏ¿© ÀÚ·áÇüÀ» Á¤È®È÷ ÁöÁ¤ÇØ ÁÖ¾î¾ß ÇÑ´Ù.  ÀÚ·áÀÇ ¹üÀ§, ºÎÈ£À¯¹«, ÇüÅ´ ÀÚ·áÇü¿¡ ÀÇÇØ °áÁ¤µÈ´Ù.

(2) ÀÚ·áÇüÀÇ Á¾·ù
 

±¸ºÐ

ÀÚ·áÇü

¹üÀ§

¹ÙÀÌÆ®

ºÎÈ£

Á¤¼öÇü

char
unsigned char

-128~127(-27~27-1)
0~255(0~28-1)

1(8)
1(8)

À¯
¹«

À¯
¹«
À¯
¹«
À¯
¹«

int
unsigned (int)
short
unsigned short
long
unsigned long

-32768~32767(-215~215-1)
0~65535(0~216-1)
-32768~32767(-215~215-1)
0~65535(0~216-1)
-21¾ï~21¾ï(-231~231-1)
0~43¾ï(0~232-1)

2(16)
2(16)
2(16)
2(16)
4(32)
4(32)

½Ç¼öÇü

float
double
long double

8.4 X 10-37~3.4 X 1038
2.2 X 10-308~1.8 X 10308
3.4 X 10-4932~1.1 X 104932

4(32)
8(64)
10(80)

À¯

±âŸ

void

½ÇÁ¦ ÀÚ·á´Â ¾øÀ½À» ¸í½ÃÀûÀ¸·Î ¼±¾ð

ÇÔ¼öÀÇ °æ¿ì¿¡´Â ÇÔ¼ö°ªÀÌ ¾øÀ½À» ¸í½ÃÀûÀ¸·Î ¼±¾ð. ´Ü¡ºvoid *¡»´Â ÇÔ¼ö°ªÀÌ Æ÷ÀÎÅÍÇüÀÓÀ» ¼±¾ð


À§ Ç¥ÀÇ ÀÚ·áÇüÀº ±âº» ÀÚ·áÇüÀ̸ç, ÀÌ À̿ܿ¡µµ ¹è¿­, Æ÷ÀÎÅÍ, ±¸Á¶Ã¼, °ø¿ëüµîÀÇ ÀÚ·áÇüÀÌ ÀÖ´Ù. À̵éÀº À§ÀÇ ±âº» ÀÚ·áÇü¿¡ ÀǰÅÇÏ¿© ¸¸µé¾îÁö´Âµ¥ À̵鿡 ´ëÇØ¼­´Â ÈÄ¿¡ Â÷Â÷ ¼³¸íÇÑ´Ù.

À§·Î


ºÎÈ£Á¤¼öÇü(char, int, long)

º¯¼ö°¡ À½¼ö¿Í ¾ç¼ö ¸ðµÎ¸¦ ÃëÇÒ ¶§¿¡´Â ´ÙÀ½ÀÇ ÀÚ·áÇüÀ» »ç¿ëÇÑ´Ù.
 

ÀÚ·áÇü

¹ÙÀÌÆ®¼ö

10Áø ¹üÀ§

16Áø ¹üÀ§

char

int

short

long

1(8ºñÆ®)

2(16ºñÆ®)

2(16ºñÆ®)

4(32ºñÆ®)

-128~127

-32,768~32.767

-32,768~32,767

-2,147,483,648~2,147,483,647

0~0xFF

0~0xFFFF

0~0xFFFF

0~0xFFFFFFFF

 
À§ ÀÚ·áÇüÀº °¢°¢¡º-2
ºñÆ®¼ö-1~2ºñÆ®¼ö-1 -1¡» (ºñÆ®¼ö´Â 8, 16, 32) »çÀÌÀÇ Á¤¼ö°ª¸¸À» Çã¿ëÇÑ´Ù.  À̸¦ 10Áø ¹üÀ§·Î Ç¥½ÃÇϸé À§ Ç¥¿Í °°Àºµ¥ char¿Í intÀÇ 10Áø ¹üÀ§´Â ¿Ü¿öµÑ Çʿ䰡 ÀÖ´Ù.  longÇüÀÇ ¹üÀ§´Â¡º¾à -21¾ï~21¾ï¡»À¸·Î ¿Ü¿ì´Â °ÍÀÌ ÁÁÀ» °ÍÀÌ´Ù.

¿¹¸¦ µé¾î charÇüÀÇ °æ¿ì¿¡´Â ´ÙÀ½°ú °°ÀÌ ¼öÄ¡°¡ Áõ°¡ÇÑ´Ù.

0  1  2 ... 126  127   -128  -127  ...  -1  0  1
-128˼ 127+1˼ -128

´ÙÀ½¿¡ char, intÇüÀÇ ÇÁ·Î±×·¥¿¹¸¦ Ç¥½ÃÇÏ¿´´Ù.

#include <stdio.h>

void main()
{
    char ch=125;
    int in=32765, i;

    for (i=1; i<=7; i++)
        printf("%8d", ch++);

    printf("¡¬n");

    for (i=1; i<=7; i++)
        printf("%8d", in++);
}

char, int, short, long ÇüÀº ¾ç¼ö¿Í À½¼ö¸¦ ¸ðµÎ Çã¿ëÇϹǷΡººÎÈ£ ¼öÄ¡(Signed Number)ÀÇ ÀÚ·áÇü¡»À̶ó ÇÑ´Ù.

Âü°í   signed(ºÎÈ£ÇüÀÓÀ» ¸í½Ã)

´ÙÀ½Àº ¼­·Î µ¿ÀÏÇÏ´Ù.

char  == signed char

int  == signed int == signed

long  == signed long

À§·Î



ºñºÎÈ£ Á¤¼öÇü(unsigned char, int, long)

º¯¼ö°¡ ¾ç¼ö°ª¸¸À» ÃëÇÒ ¶§¿¡´Â ´ÙÀ½ÀÇ ÀÚ·áÇüÀ» »ç¿ëÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù.
 

ÀÚ·áÇü

¹ÙÀÌÆ®¼ö

10Áø ¹üÀ§

16Áø ¹üÀ§

unsigned char

unsigned int

unsigned short

unsigned long

1(8ºñÆ®)

2(16ºñÆ®)

2(16ºñÆ®)

4(32ºñÆ®)

0~255

0~65,535

0~65,535

0~4,294,967,295

0~0xFF

0~0xFFFF

0~0xFFFF

0~0xFFFFFFFF


À§ ÀÚ·áÇüÀº °¢°¢¡º0~2ºñÆ®¼ö-1¡»»çÀÌÀÇ Á¤¼ö°ª¸¸À» Çã¿ëÇÑ´Ù.  À̸¦ 10Áø ¹üÀ§·Î Ç¥½ÃÇϸé À§ Ç¥¿Í °°Àºµ¥ unsigned char¿Í unsigned intÀÇ 10Áø ¹üÀ§´Â ¿Ü¿öµÑ Çʿ䰡 ÀÖ´Ù.  unsigned longÇüÀÇ ¹üÀ§´Â 0~¾à 42¾ïÀ¸·Î ¿Ü¿öµÎ´Â °ÍÀÌ ÁÁ´Ù.

¿¹¸¦ µé¾î unsigned char ÇüÀÇ °æ¿ì¿¡´Â ´ÙÀ½°ú °°ÀÌ ¼öÄ¡°¡ Áõ°¡ÇÑ´Ù.

0   1   2 ...  254   255   0   1   2 ...
255´Â 255+1Àº 0

´ÙÀ½¿¡ unsigned char, unsigned intÇüÀÇ ÇÁ·Î±×·¥¿¹¸¦ Ç¥½ÃÇÏ¿´´Ù.

#include <stdio.h>

void main()
{
    unsigned char uc=253;
    unsigned int ui=65523, i;

    for (i=1; i<=7; i++)
        printf("%8u", uc++);

    printf("¡¬n");

    for (i=1; i<=7; i++)
        printf("%8u", ui++);
}

¡á %u

unsignedÇüÀÇ ÀڷḦ printf() ÇÔ¼ö·Î Ãâ·ÂÇÒ ¶§¿¡´Â %u, %lu¸¦ »ç¿ëÇÑ´Ù(%d, %ldµµ ¹°·Ð »ç¿ëÇÒ ¼ö ÀÖÀ¸³ª Ãâ·Â ¹üÀ§¿¡ Á¦ÇÑÀ» ¹Þ´Â´Ù.)

%uÀÇ Ãâ·Â ¹üÀ§ : 0~65535(unsigned intÇüÀÇ ¹üÀ§)

%luÀÇ Ãâ·Â ¹üÀ§ : 0~¾à 42¾ï(unsigned longÇüÀÇ ¹üÀ§)

Ãâ·Â ¹üÀ§¸¦ Á¦¿ÜÇϰí´Â %u´Â %d¿Í %lu´Â %ld¿Í µ¿ÀÏÇÏ´Ù

À§·Î



¹®ÀÚ ÀÚ·áÀÇ Ã³¸®

Æ÷Æ®¶õ, º£ÀÌÁ÷ µîÀÇ ¾ð¾î¿¡´Â ¹®ÀÚÇüÀÌ Á¸ÀçÇϳª C¾ð¾î¿¡´Â ¹®ÀÚÇüÀº Á¸ÀçÇÏÁö ¾Ê´Â´Ù.  C¿¡¼­´Â ¹®ÀÚ´Â ³»ºÎÀûÀ¸·Î
¹®ÀÚÀÇ ¾Ö½ºÅ° Äڵ尡 Á¤¼öÀÇ ÇüÅ·Π»ç¿ëµÇ¸ç, ÀÚ·á Ç¥½Ã½Ã %c°¡ ¾Æ´Ñ %¹®ÀÚ(%d, %o, %x, %u)¸¦ ÁöÁ¤ÇÏ¸é ¹®ÀÚÀÇ ¾Ö½ºÅ° Äڵ尡 Ç¥½ÃµÈ´Ù.  ¹Ý´ë·Î 0~255 »çÀÌÀÇ intÇü Á¤¼ö¸¦ %¹®ÀÚ %c¸¦ »ç¿ëÇÏ¿© Ç¥½Ã½ÃŰ¸é ¾Ö½ºÅ° Äڵ尡 ÇØ´ç¡ºÁ¤¼ö¡»ÀÎ ¾Ö½ºÅ° ¹®ÀÚ°¡ Ç¥½ÃµÈ´Ù.  Áï ¹®ÀÚ´Â 0~255 »çÀÌÀÇ Á¤¼ö¿Í ȣȯ¼ºÀ» °®´Â´Ù.  ´ÙÀ½¿¡ °£´ÜÇÑ ÇÁ·Î±×·¥ ¿¹¸¦ Ç¥½ÃÇÏ¿´´Ù.

#include <stdio.h>

void main()
{
    char ch;
    int in;

    ch = in = 'A';
    printf("ch = %d¡¬n", ch);
    printf("int = %d¡¬n", in);

    ch = int = 100;
    printf("¡¬nch : %c¡¬n", ch);
    printf("in : %c¡¬n", in);
}

¹®ÀÚ´Â ³»ºÎÀûÀ¸·Î ¾Ö½ºÅ° ÄÚµå·Î 󸮵ǰí, ¾Ö½ºÅ° ÄÚµå´Â 0~255 »çÀÌÀ̹ǷΠ¹®ÀÚ ÀÚ·á ó¸®¿ë º¯¼ö´Â unsigned char·Î ÇÏ´Â °ÍÀÌ ¹«³­ÇÏ´Ù.  ÀÌ¿Í °°Àº ÀÌÀ¯·Î char(character)¶õ À̸§ÀÌ ºÙ¿©Áø °ÍÀÌ´Ù.

À§·Î



½Ç¼öÇü

¼ö¼öÁ¡ÀÌ ÀÖ´Â ¼ö°¡ ½Ç¼ö(Floating Point Number : ºÎµ¿¼Ò¼öÁ¡¼ö)ÀÌ´Ù.  ´ÙÀ½¿¡ ½Ç¼öÀÇ ¿¹¸¦ Ç¥½ÃÇÏ¿´´Ù.

3.14        : ¼Ò¼öÁ¡ÀÌ ÀÖ´Â ¼ö´Â ¸ðµÎ ½Ç¼ö(double Çü)

3.            : ¼ýÀÚ µÚ¿¡ ¼Ò¼öÁ¡¸¸ Âï¾îµµ µÈ´Ù(double Çü)

3.14E5     : ¼ýÀÚ µÚ¿¡ E¸¦ ÀûÀ¸¸é doubleÇü ½Ç¼ö(=3.14 X 10
5)

3.14e-5f  : floatÇü ½Ç¼öÀÇ Áö¼ö Ç¥Çö(=3.14 X 10
-5)

¼Ò¼öÁ¡ÀÌ ÀÖ´Â ¼öÄ¡ ÀڷḦ »ç¿ëÇÏ·Á¸é ÀÚ·áÇüÀ» ´ÙÀ½ Áß ¾î´À Çϳª·Î ¼±¾ðÇØÁÖ¾î¾ß ÇÑ´Ù(floatÇü ¹üÀ§ÀÎ -21¾ï~21¾ïÀ» ¹þ¾î³ª´Â Á¤¼ö¸¦ ó¸®ÇÒ ¶§¿¡µµ ¸¶Âù°¡ÁöÀÌ´Ù).
 

ÀÚ·áÇü

¹ÙÀÌÆ®¼ö

ÃÖ´ë Á¤¹Ðµµ

À¯È¿¹üÀ§(Àý´ë°ª)

float

double

long double

4

8

10

10Áø¼ö·Î 7ÀÚ¸®

10Áø¼ö·Î 15ÀÚ¸®

10Áø¼ö·Î 19ÀÚ¸®

8.4X10-37~3.4X1038

2.2X10
-308~1.8X10308

3.4X10
-4932~1.1X104932


float, double, long doubleÀº À½¼ö¿Í ¾ç¼ö ¸ðµÎ Çã¿ëÇÑ´Ù.  Áï ½Ç¼öÇüÀº ¸ðµÎ ºÎÈ£ ¼öÄ¡ÀÌ´Ù.
floatÇüÀÇ Á¤¹Ðµµ´Â 10Áø¼ö·Î ÃÖ´ë 7ÀÚ¸®±îÁöÀ̰í, doubleÇüÀº ÃÖ´ë 15ÀÚ¸®±îÁöÀ̸ç, long doubleÇüÀº ÃÖ´ë 19ÀÚ¸®±îÁöÀÌ´Ù.  Áï  doubleÀº floatÇüº¸´Ù ½Ç¼ö¸¦ º¸´Ù Á¤¹Ð(Á¤È®)ÇÏ°Ô Ã³¸®ÇØ ³¾ ¼ö ÀÖ´Ù.
´ÙÀ½¿¡ ÇÁ·Î±×·¥ ¿¹¸¦ Ç¥½ÃÇÏ¿´´Ù.

#include <stdio.h>

void main()
{
    int i=0, n;
    float f=0.0;
    double = d=0.0;

    for (n=1; n<=10000; n++)
        I += 100000, f += 100000, d += 100000;

    printf("¡¬nint : %11.5f", i/100000.0);
    printf("¡¬nfloat : %11.5f", f/100000.0);
    printf("¡¬ndouble : %11.5f", d/100000.0);
}

À§ ÇÁ·Î±×·¥Àº º¯¼ö i, f, d¿¡ 10¸¸À» ¸¸¹ø ´õÇÑÈÄ ±× °á°ú¸¦ 10¸¸À¸·Î ³ª´©¾î Ç¥½ÃÇÑ´Ù.  ½ÇÇà °á°ú¸¦ º¸¸é doubleÇüÀº °á°ú°¡ 100% Á¤È®Çϰí floatÇüÀº ¾à°£ÀÇ ¿ÀÂ÷¸¦ ¼ö¹ÝÇÑ´Ù.  µû¶ó¼­ Á¤¹ÐÇÑ °è»êÀ» ¿ä±¸ÇÏ´Â °æ¿ì¿¡´Â doubleÇüÀ» »ç¿ëÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù.

À§·Î

¡¡

Copyright 2000.8 CandCplus   khi1000