Presentation is loading. Please wait.

Presentation is loading. Please wait.

4장 자료형.

Similar presentations


Presentation on theme: "4장 자료형."— Presentation transcript:

1 4장 자료형

2 수원과학대학 컴퓨터정보과 1학년 1학기 4장 자료형(Data Type) 4.1 자료형(Data Type) 4.2 숫자(Number) 4.3 문자(Character) 4.4 구조체(Structure) 4.5 공용체(Union) 4.6 비트 필드(Bit Field) 4.7 열거형(Enumerous) 4.8 사용자 정의(User-Defined)

3 수원과학대학 컴퓨터정보과 1학년 1학기 4.1 자료형 자료형에 따라 다음 사항들이 결정된다

4 수원과학대학 컴퓨터정보과 1학년 1학기 4.1 자료형 자료형의 종류

5 수원과학대학 컴퓨터정보과 1학년 1학기 4.1 자료형 자료형에 따른 값의 표현범위

6 수원과학대학 컴퓨터정보과 1학년 1학기 자료형 선언 선언형식

7 4.1.2 형변환 ( ) ?: 자료의 형을 변경하는 것 (1)자동 형변환 : 예)
수원과학대학 컴퓨터정보과 1학년 1학기 4.1.2 형변환 ( ) ?: 자료의 형을 변경하는 것 (1)자동 형변환 : 수식에 서로 다른 자료형이 섞여 있는 경우, 컴파일러에 의해 자료형이 자동으로 변경되는 경우 낮은 우선순위의 피연산자는 높은우선순위의 피연산자형으로 변경 자료형의 우선순위 예) i를 float형으로 형변환한다 계산된 결과는 float형이다

8 4.1.2 형변환 (2) ( ) 연산자를 이용한 형변환 프로그래머에 의해 강제적으로 형을 변환
수원과학대학 컴퓨터정보과 1학년 1학기 4.1.2 형변환 (2) ( ) 연산자를 이용한 형변환 프로그래머에 의해 강제적으로 형을 변환 ( )안에 변경할 자료형을 기입 -->(자료형) 예) cast연산자의 형변환 #include <stdio.h> int main(){ int i,j; float a,b; i=1; j=3; a= (float)i/(float)j; b= i/j; printf("\na=%f, b=%f\n\n", a,b); return 0; }

9 4.2 숫자 정수(Integer) 실수(Real Number) 저장길이에 따라 수원과학대학 컴퓨터정보과 1학년 1학기
4.2 숫자 정수(Integer) 저장길이에 따라 실수(Real Number)

10 ( ) 연산자 자료형의 길이를 byte단위로 구해준다 형식:sizeof(자료형) 수원과학대학 컴퓨터정보과 1학년 1학기
( ) 연산자 자료형의 길이를 byte단위로 구해준다 형식:sizeof(자료형)

11 4.3 문자 1byte 문자로서의 char 1byte 정수로서의 char 1개 문자(1byte)를 나타내는 자료형
수원과학대학 컴퓨터정보과 1학년 1학기 4.3 문자 1byte 문자로서의 char 1개 문자(1byte)를 나타내는 자료형 1byte 정수로서의 char char(signed char)로 선언: ~127까지 표현 unsigned char로 선언: 0~256까지 표현 예) int main( ) { char cha = 'A'; printf("\n 문자 %c = 16진수 %x = 10진수 %d", cha, cha, cha); printf("\n 정수로 취급 cha+1= %d", cha + 1); return 0; }

12 4.4 구조체 ( ) ?: 하나이상의 기본 자료형 변수들을 묶어서 그룹화하는 자료형 구조체 선언
수원과학대학 컴퓨터정보과 1학년 1학기 4.4 구조체 ( ) ?: 하나이상의 기본 자료형 변수들을 묶어서 그룹화하는 자료형 구조체 선언

13 4.4.1 구조체 변수 선언 struct point struct point { { int x; int x; int y;
수원과학대학 컴퓨터정보과 1학년 1학기 구조체 변수 선언 *구조체 선언과 변수 선언을 동시에 struct point { int x; int y; } p1, p2, p3; *구조체 선언과 변수 선언을 따로 struct point { int x; int y; }; struct point p1, p2, p3;

14 4.4.1 구조체 변수 선언(p96) struct srec struct srec { { int hak; int hak;
수원과학대학 컴퓨터정보과 1학년 1학기 구조체 변수 선언(p96) 예2) 구조체 선언과 변수 선언을 따로 struct srec { int hak; char name[10]; float jumsu; }; struct srec kim, park; 예1) 구조체 선언과 변수 선언을 동시에 struct srec { int hak; char name[10]; float jumsu; } kim, park;  

15 4.4.2 구조체 필드(멤버변수) 지정 #include <stdio.h>
수원과학대학 컴퓨터정보과 1학년 1학기 4.4.2 구조체 필드(멤버변수) 지정 #include <stdio.h> struct srec // 구조체 srec 선언 { int hak; float jumsu; }; int main(void) struct srec kim, park; // 구조체 변수 kim, park 선언 kim.hak =12345; // 구조체 변수 kim의 필드(멤버변수) hak에 접근 kim.jumsu = ; // 구조체 변수 kim 의 필드(멤버변수) jumsu에 접근 printf("Kim의 학번= %d \n", kim.hak); printf("Kim의 점수= %3.1f \n", kim.jumsu); return 0; }

16 4.4.3 구조체형 배열 배열의 원소가 구조체인 배열 예1) 예2) 배열원소의 멤버변수에 값 지정
수원과학대학 컴퓨터정보과 1학년 1학기 4.4.3 구조체형 배열 배열의 원소가 구조체인 배열 예1) 예2) 배열원소의 멤버변수에 값 지정

17 예제-구조체에 값 저장(P99) #include <stdio.h> struct list{ char name;
수원과학대학 컴퓨터정보과 1학년 1학기 예제-구조체에 값 저장(P99) #include <stdio.h> struct list{ char name; char sex; int nai; }; int main( ){ struct list a, b; a.name = 'K'; a.sex = 'F'; a.nai = 40; b.name = 'S'; b.sex = 'M'; b.nai = 60; printf("No 이름 성별 나이\n"); printf(" \n"); printf("1 %c %c %d\n", a.name, a.sex, a.nai); printf("2 %c %c %d\n", b.name, b.sex, b.nai); return 0; }

18 예제-구조체의 초기화(p99) #include <stdio.h> struct list{ char *irum;
수원과학대학 컴퓨터정보과 1학년 1학기 예제-구조체의 초기화(p99) #include <stdio.h> struct list{ char *irum; char sex; int age; } a = {"KIM", 'M', 33}, b = {"PARK", 'F', 60}; int main( ) { printf("No 이름 성별 나이\n"); printf(" \n"); printf(" 1 %s %c %d\n", a.irum, a.sex, a.age); printf(" 2 %s %c %d\n", b.irum, b.sex, b.age); return 0; }

19 예제-구조체 배열변수의 선언과 초기화-(p100)
수원과학대학 컴퓨터정보과 1학년 1학기 예제-구조체 배열변수의 선언과 초기화-(p100) #include <stdio.h> struct list { char *name; char sex; int nai; } man[5] = {{"KIM", 'M', 33}, {"PARK", 'F', 70}, {"LEE", 'M', 10}, {"LOVE", 'M', 50}, {"STACK", 'F', 60}};

20 예제-구조체를 포함한 구조체-(p101) #include <stdio.h> struct date{ int yy;
수원과학대학 컴퓨터정보과 1학년 1학기 예제-구조체를 포함한 구조체-(p101) #include <stdio.h> struct date{ int yy; int mm; int dd; }; struct person{ char name[10]; struct date birth; } saram; void main( ){ saram.birth.yy = 1980; saram.birth.mm = 6; saram.birth.dd = 1; scanf("%s", saram.name); printf("이름 : %s\n",saram.name); printf("생일 : %4d. %2d. %2d\n", saram.birth.yy, saram.birth.mm, saram.birth.dd); }

21 4.5 공용체(Union) 멤버 변수들이 메모리 공간을 공유해서 사용 선언형식 장점: 주기억 장소를 절약 union {
수원과학대학 컴퓨터정보과 1학년 1학기 4.5 공용체(Union) 멤버 변수들이 메모리 공간을 공유해서 사용 장점: 주기억 장소를 절약 선언형식 공용체 멤버 변수의 선언: 구조체와 동일 공용체 변수의 선언: 구조체와 동일 멤버 변수 접근: 구조체와 동일 공용체의 시작을 알리는 키워드 union { char grade; int score; } ; mark 공용체 이름 멤버 변수 멤버 변수 m 공용체 변수

22 수원과학대학 컴퓨터정보과 1학년 1학기 4.5 공용체(Union) 구조체(Struct)

23 수원과학대학 컴퓨터정보과 1학년 1학기 4.5 공용체(Union) 공용체(Union)

24 예제-구조체와 공용체의 크기 비교-(P103) #include <stdio.h> struct sb { char c;
수원과학대학 컴퓨터정보과 1학년 1학기 예제-구조체와 공용체의 크기 비교-(P103) #include <stdio.h> struct sb { char c; int i; float f; } x1; union ub { } x2; int main( ) { int i, k; i = sizeof(struct sb); k = sizeof(union ub); printf("struct length == %d\n", i); printf("union length == %d\n", k); }

25 4.6 비트필드(bit field) 비트필드(Bit field) 선언 형식
수원과학대학 컴퓨터정보과 1학년 1학기 4.6 비트필드(bit field) 비트필드(Bit field) 구조체나 공용체의 멤버를 바이트 단위가 아닌, 비트단위로 쪼개어 선언할수 있게 함으로써 기억공간을 알뜰하게 사용하게 함 선언 형식 각 멤버변수이름 다음에 이 멤버의 비트 크기를 적는다 자료형은 정수와 호환되는 모든 타입을 허용한다. (char, short, int등등) 멤버가 선언된 순서대로 하위 비트에서 순서대로 할당된다. struct { 자료형 멤버변수1 : bit수; 자료형 멤버변수2 : bit수; } ; 구조체 이름 구조체 변수

26 4.6 비트필드(bit field) 예1) 구조체 date의 선언-(P105) 기억장소에서의 표현상태
수원과학대학 컴퓨터정보과 1학년 1학기 4.6 비트필드(bit field) 예1) 구조체 date의 선언-(P105) 기억장소에서의 표현상태

27 4.6 비트필드(bit field) 예2) 비트 필드 사용 예 #include <stdio.h>
수원과학대학 컴퓨터정보과 1학년 1학기 4.6 비트필드(bit field) 예2) 비트 필드 사용 예 #include <stdio.h> struct samplebitfields { unsigned short a : 4; unsigned short b : 5; unsigned short c : 7; } test; int main( void ) test.a = 2; test.b = 31; test.c = 0; printf("\ntest의 기억상태(16진수)=%0x\n",test); }

28 4.7 열거형(enumerous) 열거형(enum) 선언형식 변수가 갖는 값에 의미를 부여
수원과학대학 컴퓨터정보과 1학년 1학기 4.7 열거형(enumerous) 열거형(enum) 변수가 갖는 값에 의미를 부여 0,1,2,3,…값 대신 기호상수를 사용하여 변수값의 의미를 명확하게 알수 있음 함 선언형식 enum { } ; week sun, mon, tue, wed, fri, sat day 키워드 열거형이름 상수 이름 열거형변수

29 4.7 열거형(enumerous) 예1) 예2) ① sun, mon, ⋯, sat는 열거형 상수로,
수원과학대학 컴퓨터정보과 1학년 1학기 4.7 열거형(enumerous) 예1) 예2) ① sun, mon, ⋯, sat는 열거형 상수로, 문자가 아니라 정수형을 가지며 ② sun부터 sat까지 각각 0, 1, 2, ⋯, 6이 된다. #include <stdio.h> void main( ) { enum week {sun, mon, tue=5, wed=2,thu, fri, sat } day; day = tue; printf("\nday=%d",day); day = sat; printf("\nday=%d\n",day); } ① sun=0, mon=1, tue=5가 되고 ② wed=2에 의해 이후는 하나씩 증가되어 tue=3, fri=4, sat=5가 된다.

30 #include <stdio.h>
수원과학대학 컴퓨터정보과 1학년 1학기 #include <stdio.h> enum week {sun, mon, tue, wed, thu, fri, sat } ; int main( void ) { char *date[7]={"Sunday", "Monday", "Tuesday", "Wednesday","Thursday", "Friday","Saturday"}; printf("%s\n", date[sun]); printf("%s\n", date[wed+2]); }

31 4.8 사용자 정의(user-defined) ( ) 를 이용한 자료형의 재정의 기존 자료형을 새로운 이름으로 변경
수원과학대학 컴퓨터정보과 1학년 1학기 4.8 사용자 정의(user-defined) ( ) 를 이용한 자료형의 재정의 기존 자료형을 새로운 이름으로 변경 프로그램의 가독성을 높일 수 있음

32 예제- typedef의 활용-(P109) #include <stdio.h>
수원과학대학 컴퓨터정보과 1학년 1학기 예제- typedef의 활용-(P109) #include <stdio.h> #define PROGRAM main( ) #define BEGIN { #define END } #define PRINT printf typedef int jungsu; typedef float real; PROGRAM BEGIN enum week {sun, mon, tue=5, wed=2,thu, fri, sat } day; jungsu i=0; real j = 1.0; day = tue; PRINT("\nday=%d\n",day); END


Download ppt "4장 자료형."

Similar presentations


Ads by Google