Isaac87 2014. 6. 7. 10:01

데이터의 표현범위

 #include <stdio.h>
#include <limits.h>  // 정수형의 최솟값(MIN), 최댓값(MAX) 상수 정의
int main(void)
{
   printf(“ char의 최솟값 %d, 최댓값 %d \n", CHAR_MIN, CHAR_MAX);
   printf("short의 최솟값 %d, 최댓값 %d \n", SHRT_MIN, SHRT_MAX);
   printf(“   int의 최솟값 %d, 최댓값 %d \n", INT_MIN, INT_MAX);
   printf(“ long의 최솟값 %d, 최댓값 %d \n", LONG_MIN, LONG_MAX);
  
   return 0;
}

unsigned

 #include <stdio.h>
int main(void)
{
    signed char num1=-126; // -128 ~ 127의 데이터 표현 범위
    unsigned char num2=130; //     0 ~ 256의 데이터 표현 범위
  
    printf("%d \n", num1);  // -126 출력
    printf("%u \n", num2);  // 130 출력
  
    return 0;
}

오버플로우 & 언더플로우

 #include <stdio.h>
int main(void)
{
    char num1=-129; // 최솟값(-128)보다 -1만큼 작은 값 저장(언더플로우)
    char num2=128; // 최댓값(127)보다 +1만큼 큰 값 저장(오버플로우)
  
    printf("%d \n", num1); // 127 출력
    printf("%d \n", num2); // -128출력
  
    num1=-130;  // 최솟값(-128)보다 -2만큼 작은 값 저장(언더플로우)
    num2=129;  // 최댓값(127)보다 +2만큼 큰 값 저장(오버플로우)
  
    printf("%d \n", num1); // 126 출력
    printf("%d \n", num2); // -127출력
  
    return 0;
}

문자형 출력

 #include <stdio.h>
int main(void)
{
   char val1;
 
   val1='A';
   printf("%d %c \n", val1, val1); // 65  A 출력
 
   val1='B';
   printf("%d %c \n", val1, val1); // 66  B 출력
  
   val1='C';
   printf("%d %c \n", val1, val1); // 67  C 출력
  
   return 0;
}

아스키코드 출력

 #include <stdio.h>
int main(void)
{
   char val1;
   int val2;
  
   printf("문자 입력 : ");
   scanf("%c", &val1);
   printf("ASCII 코드 값 %d입니다. \n", val1);

   printf("ASCII 코드 값 입력 : ");
   scanf("%d", &val2);
   printf("문자로 %c입니다.\n", val2);

   return 0;
}

강제 형변환

#include <stdio.h>
int main(void)
{
   int num1=10, num2=3;
   double result;
  
   result=num1/num2;
   printf("결과 : %lf \n", result);
 
   result=(double)num1/num2; 
   printf("결과 : %lf \n", result);

   result=num1/(double)num2;
   printf("결과 : %lf \n", result);
   
   result=(double)num1/(double)num2;
   printf("결과 : %lf \n", result);
   return 0;
}