데이터타입(기본, 파생형)

2017. 2. 13. 11:43Programming/C



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
#include<stdio.h>
 
int main() {
    char a=128//char는 문자/숫자 모두 가질 수 있다.
    printf("char a : %d \n", a);
    printf("char a : %c \n", a);
 
    unsigned char b = 255;
    printf("unsigned char b : %d \n", b);
 
    char c = 'a';
    printf("char c : %c, %d \n", c, c);
 
    short int d = 32768//16비트
    printf("short int d : %d \n", d);
    short e = 32768;    //int 생략 가능
    printf("short e : %d \n", e);
    long f = 32768;    //32비트(java의 int와 동일)
    printf("long f : %d \n", f);
    
    int h = 2147483648//운영체제가 32비트면 32비트(한 번에 처리 가능한 비트 단위)
    printf("int h : %d \n", h);
    int *ptr_h = &h; //h의 포인터
    printf("ptr_h: %d", ptr_h);  //주소값 출력
    printf("ptr_h: %d"*ptr_h); //*을 붙이면 값을 출력
 
    long long l = 100//64bit 자바에서 사용하던 long과 같다.
    printf("sizeof l: %d \n"sizeof(l));
 
    bool flag = 1>0//1bit java에서 1byte boolean과 동일
    printf("bool flag: %d \n", flag);
    printf("bool flag: %s \n", flag?"true":"false");
 
}
cs



서식문자 정리


서식문자 

의미 

기능 

 \n 

 newline 

다음 줄로 개행 

 \t

 tab 

다음 탭으로 

 \r

 carriage return

현재 줄의 첫번째 칸으로 

 \b

 backspace 

백스페이스 

 \a

 alert 

경보음 낸다. 




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
#include<stdio.h>
 
int main() {
    float f = 54321.123456f; //32bit
    printf("float f: %f \n", f);
    printf("float e: %e \n", f);
    //부호비트(+ or -) + 지수비트 8bit + 유효비트(정수) 23bit
    //float는 지수비트에게 너무 많은 양의 bit를 양보해서
    //표현 가능한 정수의 크기가 작다. 그래서 오차가 발생.
    //그러므로 double을 기본 실수로 잡는다.
 
    double d = 54321.123456//64bit
    printf("double d: %f \n", d);
 
    char c[100]; //문자열은 기본 데이터 타입이 아니다.
    //String은 기본 데이터 타입이 아닌 class
    char d[] = "abcd";
    printf("size of c: %d \n"sizeof(c));
    printf("size of d: %d \n"sizeof(d));
 
    char s1[] = { 'a','b','c','d' };
    char s2[] = "abcd";
    printf("char s1: %s \n"sizeof(s1));
    printf("char s2: %s \n"sizeof(s2));
    printf("char s1: %s \n", s1);A
    printf("char s2: %s \n", s2);
 
    //c언어에서 문자열의 약속은 char[end] = '\0';
    //'\0'을 포함하는 배열위치가 문자열의 마지막 열로 인식
 
    //기본 데이터 타입(기본 자료형)
    //bool(1), char(8), short(16), long(32), int(16 or 32), long long(64)
    //float(32), double(64)
    //메모리에 저장되는 값이 모두 정수(2진수)와 연관이 있다.
    //메모리에는 2진수가 저장된다.
 
 
}
cs



**배열 요소 개수 구하기**


1
2
3
4
int nums[] = {1,2,3,4,5};
int length;
length = sizeof(nums)/sieof(nums[0]);
//요소 개수 = 배열 크기 * 한 요소 크기
cs




파생형 데이터타입


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
#include<stdio.h>
#define PI 3.14159 //매크로: 상수처럼 동작
#define SUM 1+10 //매크로는 빌드되지 않고 사용한 곳에서 빌드될 때 작성만 한다.
                 //즉 자료형이 아니다.
 
void a(int a); //프로토타입: java의 추상메서드 같은 역할
void change(char *ptr_x, char *ptr_y);
//구조체: 작성법은 class와 동일
//자료 구조는 배열과 같다.
//구조체는 파생 자료형이다.
 
struct Point {
    //[x][y][move()]
    int x; int y;
    void move(){
        x += 10;
        y -= 20;
    }
};
 
union MyUnion { 
    //union은 구조체와 비슷하지만 자료들이 메모리를 공유
    //파생 자료형 중 하나
    int i; char c;
};
 
int main() {
    //c에서 자료형은 build시 메모리에 저장되는 것을 말한다.
    //JAVA에서는 호출시 메모리에 저장
    //반면에 C는 순차적으로 build한다.
    a(10);
    printf("PI출력: %f \n", PI);
    printf("4*SUM출력: %d \n"4*SUM);
 
    int arr[] = { 1,2,3,4 };
    int *ptr_arr = &arr[0];
    printf("arr : %d \n", arr); //arr == &arr[0]
    printf("arr : %d \n"*&arr[0]);
    
    char x = 'a';
    char y = 'b';
    change(&x, &y);
    
    printf("char x: %c \n", x);
    printf("char y: %c \n", y);
}
//call-by-value (저장된 값을 주고 받는 것)
//call-by-reference (포인터를 주고 받는 것)
 
void change(char *ptr_x, char *ptr_y) {
    char temp = *ptr_x;
    *ptr_x = *ptr_y;
    *ptr_y = temp;
}
 
void a(int a) {
    printf("정수 출력 : %d \n", a);
//함수 -> 파생 자료형이다.
 
cs





'Programming > C' 카테고리의 다른 글

포인터  (0) 2017.02.18
선택정렬, 버블정렬  (0) 2017.02.13
if~else, switch문  (0) 2017.02.13
시작하기  (0) 2016.10.29