스터디/C언어

C언어 자료형(Data Type)

코딩광_ 2018. 12. 14. 15:54

1.  C언어 자료형(Data Type)


C언어에는 자료형이 있다. 자료형의 종류로 정수형, 실수형, 문자형 등이 있다. 자료형 의 종류에 따라 데이터를 다루는 크기가 달라진다.


1.1 char (character, 문자형&정수형)

character 를 줄여서 char로 사용. 1byte , 8bit  문자를 저장할때 사용 char 문자자료형은 앞에 signed 가 생략된

char이다.  사용할때 signed char 로 사용해도 같다. 

unsigned char 부호가 없는 char형 이기 때문에 표현할수 있는 범위가 숫자가 더 커진다.


1
2
3
4
char ch1 = 'C';
signed char ch2 = 'D';
 
unsigned char uCh = 'AB'//부호가 없는 unsigned char 는 두개의 값을 저장할수있다.
cs


char 의 범위는 -128 ~ 127 

unsigned char 의 범위는 0 ~ 255 


c언어에서 char형은 ' ' 작은따옴표로 묶어서 표현한다. ※ 주의


1.2 short int (short Integer, 정수형)

short int는 int를 생략 할 수 있다.  2byte, 16bit


1
2
3
4
short num1 = 10;
short int num2 = -10;
 
unsigned short num3 = 30;
cs


short 의 범위는         -32,768~32,767

unsigned short  범위    0~65,535


1.3 int (Integer, 정수형)

int 의범위 -2,147,483,648 ~ 2,147,483,647


1.4 float (4byte 32bit)

유효자릿수 7


1.5 double (8byte 64bit)

유효자릿수 16


1.6 long double (8byte 64bit)

유효자릿수 16



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <stdio.h>
 
int main(void)
{
    // 자료형(Data Type)
    // Character(문자) : 문자 1개 저장
    // 정수 저장, 사칙연산 가능
    // ASCII code
    char c = 'a';
    // Decimal : 10진법 
    // 1byte == 1bit
    printf("c : %c(%d)\n", c, c);
    printf("char Size : %d byte\n"sizeof(char));
 
    // short int(Integer, 정수)
    short s = 5;
    printf("s : %i\n", s);
    printf("short Size : %d byte\n",sizeof(short));
 
    // int는 CPU가 처리하는 가장 기본적인 단위
    // 32bit CPU에서는 4byte
    // 64bit CPU에서는 8byte
    int i = 10;
    printf("i : %i\n", i);
    printf("int Size : %d byte\n"sizeof(int));
 
    // long int 
    long l = 100;
    printf("l : %li\n", l);
    printf("long Size : %d byte\n"sizeof(long));
 
    long long int ll = 10000;
    printf("long long Size : %d byte\n"sizeof(long long));
 
    // 실수
    // 부동소수점 (Floating-Point)
    // 리터럴 상수 (Literal Constant)
    float f = 3.14f;
    f = 12.34f;
    //3.14f = 12.34f;
    printf("f : %f(%d)\n", f, (int)f);
    printf("float Size : %d byte\n"sizeof(float));
 
    // 두배 정밀도 부동소수점
    // Double-Precision 
    double d = 123.456;
    printf("d : %lf\n", d);
    printf("double Size : %d byte\n"sizeof(double));
 
    //형변환(Type Casting, Conversion)
    int tmp = (int)f;
    printf("tmp : %d\n", tmp);
 
    //부동소수점 오차
    float forf = 0.0f;
    for (int i = 0; i < 10000++i)
    {
        //forf = forf + 0.0001f;
        forf += 0.0001f;
        
    }
    printf("forf : %f\n", forf);
 
    signed char sc = 200;
    unsigned char usc = 200;
 
    printf("sc : %i\n", sc);
    printf("usc : %i\n", usc);
 
 
    return 0;
}
 
cs


출력결과 :