I.   Çü º¯È¯ ¿¬»êÀÚ

ÀÚ·áÇüÀÌ ´Ù¸¥ º¯¼ö³¢¸®ÀÇ ¿¬»êÀº ¾î¶»°Ô µÉ±î¿ä? Á¤¼öÇü³¢¸®ÀÇ ¿¬»êÀº Á¤¼öÇüÀÌ µË´Ï´Ù. Áï, printf("%d", 3 /2);  ÀÇ °á°ú´Â ´ç¿¬È÷ 1ÀÔ´Ï´Ù. ±×·¯¸é Á¤¼öÇü°ú ½Ç¼öÇüÀ» ¿¬»êÇÏ¸é ±× °á°ú´Â ½Ç¼öÇüÀÌ µË´Ï´Ù.

C¾ð¾î¿¡¼­´Â Á¤¼öÇü°ú ½Ç¼öÇüÀÇ ¿¬»êÀº Á¤¼öÇüÀ» ÀÚµ¿À¸·Î ½Ç¼öÇüÀ¸·Î º¯È¯ÇÑ ´ÙÀ½¿¡ ¿¬»êÀ» ÇϹǷΠ±× °á°ú°¡ ½Ç¼öÇüÀÌ µË´Ï´Ù. Å©±â°¡ Å« ÀÚ·áÇü°ú Å©±â°¡ ÀÛÀº ÀÚ·áÇüÀÌ ¿¬»êÀ» Çϸé Å« ÀÚ·áÇüÀ¸·Î ÀÚµ¿ º¯È¯µÇ¾î ¿¬»êÀÌ µË´Ï´Ù.

 

¿¬»ê

°á°ú

¼ö½Ä ¡æ  °á°ú

int ¿¬»êÀÚ int

int

3/2  ¡æ  1

int ¿¬»êÀÚ float

float

3 /2.0 ¡æ  1.5

float ¿¬»êÀÚ int

float

3.0 / 2 ¡æ  1.5

float ¿¬»êÀÚ double

double

3.0 / 2.0 ¡æ  1.5

double ¿¬»êÀÚ float

double

3.0 / 2.0 ¡æ  1.5

 

¡¼¼Ò½º ÇÁ·Î±×·¥¡½

// File Name : ex059_cast_01.c

#include<stdio.h>

int main(){

  float n1=3.14;

  double n2=3.141592;

  printf("floatÇüÀÇ Å©±â=%d\n", sizeof(n1));

  printf("doubleÇüÀÇ Å©±â=%d\n", sizeof(n2));

  printf("floatÇü°ú doubleÇüÀÇ ¿¬»ê°á°úÀÇ Å©±â=%d\n", sizeof(n1/n2));

  printf("3.14 /3.141592 =%f\n", n1/n2);

  return 0;

}

 

¡¼½ÇÇà °á°ú¡½

floatÇüÀÇ Å©±â=4

doubleÇüÀÇ Å©±â=8

floatÇü°ú doubleÇüÀÇ ¿¬»ê°á°úÀÇ Å©±â=8

3.14 /3.141592 =0.999493

 

sizeof ¿¬»êÀÚ¸¦ »ç¿ëÇϸé floatÇü°ú doubleÇüÀÇ ¿¬»ê°á°ú°¡ doubleÇüÀÎ °ÍÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù. Çü º¯È¯ ¿¬»êÀÚ(Cast operator)´Â º¯¼ö³ª »ó¼öÀÇ ÀÚ·áÇüÀ» ÀϽÃÀûÀ¸·Î ¹Ù²Ù¾îÁÖ´Â ¿¬»êÀÚÀÔ´Ï´Ù.

 

¡¼Çü½Ä¡½

(Çü º¯È¯ ÀÚ·áÇü)º¯¼ö ¶Ç´Â »ó¼ö;

 

Áï, ÀÚ·áÇüÀ» ¹Ù²Ù°íÀÚÇÏ´Â º¯¼ö³ª »ó¼ö ¾Õ¿¡ Çü º¯È¯ ÀÚ·áÇüÀ» ½áÁÝ´Ï´Ù.

 

¡¼¼Ò½º ÇÁ·Î±×·¥¡½

#include <stdio.h>

int main(void){

  int wriExam=85, pracExam=90, total;

  float ave;

  total = wriExam+ pracExam;

  ave = (float)total / 2;           -----------¨ç

  printf("ÇÕ°è= %d  Æò±Õ=%.2f", total, ave);

  return 0;

}

 

¡¼½ÇÇà °á°ú¡½

ÇÕ°è= 175  Æò±Õ= 87.50

 

À§ ÇÁ·Î±×·¥ÀÇ ¨ç¹ø ¹®Àå¿¡¼­ Çü º¯È¯ ¿¬»êÀÚ¸¦ ¾²Áö ¾Ê°í ¿¬»êÀ» ¼öÇàÇϸé Á¤¼öÇü°ú Á¤¼öÇüÀÌ ¿¬»êÇÏ°ÔµÇ¾î °á°ú °ªÀº Á¤¼öÇüÀÌ µÇ¹Ç·Î 87ÀÌ µË´Ï´Ù. ÀÌ °ªÀ» ´Ù½Ã ºÎµ¿¼Ò¼öÁ¡Çü º¯¼ö¿¡ ±â¾ï½ÃÄÑ¾ß ÇϹǷΠave¶ó´Â ±â¾ï Àå¼Ò¿¡´Â 87.0ÀÌ ±â¾ïµÇ¾î À߸øµÈ °á°ú¸¦ ÀúÀåÇÏ°Ô µË´Ï´Ù. ±×·¯¹Ç·Î total¸¦ ½Ç¼öÇüÀ¸·Î º¯È¯ÇÏ¿© 175.0À¸·Î ¹Ù²Û ´ÙÀ½¿¡ 2·Î ³ª´©¾î¾ß Á¦´ë·Î µÈ °ªÀ» ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. ÀÌó·³ ÀڷḦ ¿¬»êÇÒ ¶§´Â ƯÈ÷ ÀÚ·áÇü¿¡ ÁÖÀÇÇÏ¿©¾ß ÇÕ´Ï´Ù.

¹°·Ð ¨ç¹ø ¹®Àå¿¡¼­  ave = total / 2.0;  À¸·Î ÇÏ¿©µµ µÇÁö¸¸ 2´Â °³¼öÀε¥ 2.0À¸·Î ¾²´Â °ÍÀº ÇÕ¸®ÀûÀÌÁö ¾ÊÀ¸¹Ç·Î ave = (float)total / 2;À¸·Î Çü¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© ÇÁ·Î±×·¡¹ÖÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÕ´Ï´Ù.