데이터타입(기본, 파생형)
2017. 2. 13. 11:43ㆍProgramming/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 |