Language/C C언어 기초 (정수형/데이터범위)
  • 728x90
    반응형

     

     

     

    C언어 Chapter 3.


     

    파생 자료형

    기본자료형에 형수정자(type modifier)를 사용하여 파생자료형을 만들 수 있다.

    파생형 Type/용량 내용
    singned   (+, -)가 존재하고 unsigned를 사용하지 않을땐 생략된다.
    unsinged int   char 앞에 사용할경우 -128~0~127을 0~255로 바꿈.
    signed long int 4byte~8byte 데이터범위 -2147483648~2147483647
    singned short int 2byte 데이터범위 -32768~32767
    💡 long, short는 앞뒤로 singned, int가 생략된다.
     

     

     

    정수형(integer type)

    📌 Int형

    • DOS 나 Windows 3.1 같은 16비트 운영체제 환경에서는 2byte에 저장된다.
      (데이터범위 -32,768~32,767)
    • Windows NT, UNIX같은 32비트 운영체제 환경에서는 4byte에 저장된다. 
      (-2,147,483,648~2147,483,647)

     

    💡 BUS의 크기에 따라 int 형의 용량은 변할 수 있다.

     

    🔔 예) VC++ 에서는 기본적으로 int는 4byte로 저장된다.

    #include <stdio.h>
    
    int main()
    {
        short sNumber;
        sNumber = 32767;
        printf("%d\n", sNumber);
        sNumber = 32768;
        printf("%d\n", sNumber);
        
        return 0;
    }

     

    결과 : (short의 데이터 범위 -32768 ~ 32767임을 증명한다.)

     

     

    🔔 예)

    #include <stdio.h>
    
    /* int 형 변수가 범위를 벗어나는 값을 가질 경우 발생하는 오류를
    보여주는 프로그램 */
    int main()
    {
        int iNumber;
        iNumber = 2147483647; // 정수의 최대값
        iNumber = iNumber + 2;
        printf("최대값보다 2가 큰 값은 %d.\n", iNumber);
        iNumber = iNumber - 2;
        printf("최대값보다 2가 작은 값은 %d.\n", iNumber);    
        iNumber = iNumber + 1;
        printf("최대값보다 1이 작은 값은 %d.\n", iNumber); // 출력 결과는 음수 최대값    
    }

     

     

    결과 : (int데이터 범위는 -2,147,483,648 ~ 2,147,483,647)

     

     

    scanf 함수

    // 키보드로부터 숫자를 입력(in-put)받아 화면에 출력하는 프로그램 
    #include <stdio.h>
    
    int main()
    {
        int iNumber;
        printf("Please enter a iNumber : ");
        scanf("%d", &iNumber); // &(ampersand) 주소연산자로 입력값을 받는 변수 앞에 붙여준다.
        printf("The iNumber you typed is %d.\n", iNumber); // % (형식지정자) d (Decimal)
        printf("The iNumber you typed is %x.\n", iNumber); // %x (Hexa decimal :16진수 출력)
        
        return 0;
    }

     

     

    결과 :

     

     

    연산자 sizeof

    • 각 컴퓨터 마다 int, short, long 형에 할당된 byte의 크기는 다르다.
    • 각자료형의 크기는 연산자 sizeof() 를 사용하면 알수있다.

     

    구문 형식

    Sizeof(자료형);

    Sizeof 변수;

    Sizeof(수식);

     

          

    🔔 예)

    //연산자 sizeof() 를 사용해서 자료형의 크기를 화면에 출력하는 프로그램
    #include<stdio.h>
    int main()
    {
        int x, y;
        x = 2;
        y = x + 5;
       // 자료형의 경우
        // ( %3d 의 3은 3칸띄움을 뜻함 %-3d 의 경우 출력값 뒤쪽으로 3칸확보)
        printf("The size of int is %3d bytes.\n", sizeof(int));
        printf("The size of short is %3d bytes.\n", sizeof (short));
        printf("The size of long is %3d bytes.\n", sizeof (long));
       
        // 변수의 경우 ( ) 를 생략해도됨
        printf("The size of x is %3d bytes.\n", sizeof x);
       
        // 수식의 경우
        printf("The size of (x + 2) is %3d bytes.\n", sizeof (x + 2));
       
        return 0;
    }

     

     

    결과 :

     

     

    정수형 상수의 표기

    📌 Long형 상수의 경우 숫자 끝에 l이나 L을 붙여서 표시하고 unsigned int 형의 경우 뒤에 u나 U를 붙여서 표시한다. Unsigned long int형의 상수는 ul이나 UL을 붙여서 표시한다.

     

    421, 67L, 57u, 67U, 89ul, 89UL

     

    🔔 예)

    // unsigned int 와 unsigned long int 자료형의 사용 예를 보여주는 프로그램
    #include <stdio.h>
    
    int main()
    {
        unsigned int num1 = 67U;
        unsigned long int num2 = 89UL;
       
        printf("%5d: size of 67U is %3d byte\n", num1, sizeof(67U));
        printf("%5d: size of 89UL is %3d byte\n", num2, sizeof(89ul));
        
        return 0;
    }

     

    결과 :

     

    🔔 예) 10진수, 8진수, 16진수 출력방법

    /* 정수형 상수 67을 10진수, 8진수, 16진수로 출력시키고, 8진수와 16진수를 화면에
    출력하는 프로그램 */
    #include <stdio.h>
       
    int main()
    {
        int number = 67;
    
        // 10진수, 8진수, 16진수로 출력
        printf("The value of 67 in decimal is %3d.\n", number);
        printf("The value of 67 in octal is %3o.\n", number);
        // %3o에서 o(octal 8진수)를 의미
        printf("The value of 67 in haxa decimal is %3x.\n", number);
        // %3x 에서 x(haxa decimal 10진수)를 의미
        return 0;
    }

     

    결과 :

     

     

    변수선언시 10진수, 8진수, 16진수 또다른 표기법

    int A = 13;      // 변수선언시 기본 10진수

    int A = 015;    // 0을 붙이면 8진수

    int A = 0xD;    // 0x 를 붙이면 16진수

     

     

     

     

    728x90
    반응형
상단으로