자료형ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110325b.pdf · 2011. 3. 25. · int 4 (32...

17
자료형 1 Friday, March 25,

Upload: others

Post on 04-Sep-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 자료형ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110325b.pdf · 2011. 3. 25. · int 4 (32 ) -2147483648 ~ long 4 (32 ) +2147483647-2147483648 ~ +2147483647 실행결과

자료형

1

Friday, March 25,

Page 2: 자료형ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110325b.pdf · 2011. 3. 25. · int 4 (32 ) -2147483648 ~ long 4 (32 ) +2147483647-2147483648 ~ +2147483647 실행결과

자료형이란?

2

6.1 ���� (1/4)!���

! �� ���� ��� ��

!���� �� ! ���: ��� ���� ��� ��! ��: ��� ��� �� ���� ��� ��

int num1;��

num1int���

&num1����

��

����� ����������

Friday, March 25,

Page 3: 자료형ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110325b.pdf · 2011. 3. 25. · int 4 (32 ) -2147483648 ~ long 4 (32 ) +2147483647-2147483648 ~ +2147483647 실행결과

자료형의 종류

3

6.1 ���� (1/4)!���

! �� ���� ��� ��

!���� �� ! ���: ��� ���� ��� ��! ��: ��� ��� �� ���� ��� ��

int num1;��

num1int���

&num1����

��

����� ����������

✓ char형은 문자형 데이터를 표현함✓많은 종류의 자료형이 필요한 이유- 자료형마다 메모리 공간의 크기가 다름- 자료형마다 서식문자와 데이터 표현 범위가 다름

Friday, March 25,

Page 4: 자료형ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110325b.pdf · 2011. 3. 25. · int 4 (32 ) -2147483648 ~ long 4 (32 ) +2147483647-2147483648 ~ +2147483647 실행결과

자료형의 크기(1/3)

4

6.1 ����� (2/4)

!���� ��! sizeof ���: ���� ��� ��� ���

! sizeof ���� ��• ‘���� ���� �� ��� �� ��.’

�� � �sizeof(���) printf(“%d”, sizeof(int) ); ���� �� ��� ��

sizeof(��) int num1 = 3;printf(“%d”, sizeof(num1) ); ��� �� ��� ��

����������������Friday, March 25,

Page 5: 자료형ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110325b.pdf · 2011. 3. 25. · int 4 (32 ) -2147483648 ~ long 4 (32 ) +2147483647-2147483648 ~ +2147483647 실행결과

자료형의 크기(2/3)

5

6.1 ��� � (3/4)---[6-1.c ��]

char num1=10;short num2=20;int num3=30;long num4=40; printf("\n--------�� ���� � ��� ��--------\n");printf(“ char�� �� %d� �, %d� � \n", sizeof(char), sizeof(num1) );printf("short�� �� %d� �, %d� � \n", sizeof(short), sizeof(num2) );printf(“ int�� �� %d� �, %d� � \n", sizeof(int), sizeof(num3) );printf(“ long�� �� %d� �, %d� � \n", sizeof(long), sizeof(num4) );

float num5=3.14;double num6=3.15;long double num7=3.17;

printf("\n--------�� ���� � ��� ��--------\n");printf(“ float�� �� %d� �, %d� � \n", sizeof(float), sizeof(num5) );printf(“ double�� �� %d� �, %d� � \n", sizeof(double), sizeof(num6) );printf("long double�� �� %d� �, %d� � \n", sizeof(long double), sizeof

����� ����������

실행결과char형의 크기 1바이트, 1바이트short형의 크기 2바이느, 2바이트int형의 크기 4바이트, 4바이트long형의 크기 4바이트, 4바이트

실행결과float형의 크기 4바이트, 4바이트double형의 크기 8바이트, 8바이트long double형의 크기 8바이트, 8바이트

Friday, March 25,

Page 6: 자료형ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110325b.pdf · 2011. 3. 25. · int 4 (32 ) -2147483648 ~ long 4 (32 ) +2147483647-2147483648 ~ +2147483647 실행결과

자료형의 크기(3/3)

6

6.1 ����� (4/4)!�� ��� ��� �

��

���

����� ����������Friday, March 25,

Page 7: 자료형ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110325b.pdf · 2011. 3. 25. · int 4 (32 ) -2147483648 ~ long 4 (32 ) +2147483647-2147483648 ~ +2147483647 실행결과

정수형

7

Friday, March 25,

Page 8: 자료형ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110325b.pdf · 2011. 3. 25. · int 4 (32 ) -2147483648 ~ long 4 (32 ) +2147483647-2147483648 ~ +2147483647 실행결과

정수형의 종류

8

6.2 ��� (1/10)

!��� ��! char(1���), short(2���), int(4���), long(4���)

! ���� �� ��� ��� ��

��� � �� ��� �� ��char 1���(8 �) -128 ~ +127short 2���(16 �) -32768 ~ +32767

int 4���(32 �) -2147483648 ~ +2147483647long 4���(32 �) -2147483648 ~ +2147483647

����������������

Friday, March 25,

Page 9: 자료형ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110325b.pdf · 2011. 3. 25. · int 4 (32 ) -2147483648 ~ long 4 (32 ) +2147483647-2147483648 ~ +2147483647 실행결과

정수형 데이터 관련 라이브러리

9

6.2 ��� (2/10)

!��� ��� �� �� ���� ��� ����! limits.h : ��� ��� �� ���(MIN)� ���(MAX) � ��

��� �(���) �(���)

char CHAR_MIX CHAR_MAXshort SHRT_MIX SHRT_MAX

int INT_MIX INT_MAXlong LONG_MIX LONG_MAX

��� �� �� ��� �� ��char 1��(8��) -128 ~ +127short 2��(16��) -32768 ~ +32767

int 4��(32��) -2147483648 ~ +2147483647long 4��(32��) -2147483648 ~ +2147483647

����������������

Friday, March 25,

Page 10: 자료형ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110325b.pdf · 2011. 3. 25. · int 4 (32 ) -2147483648 ~ long 4 (32 ) +2147483647-2147483648 ~ +2147483647 실행결과

6-2.c 실습

10

6.2 ��� (3/10)---[6-2.c ��]#include <stdio.h>#include <limits.h> // � �� ���(MIN), ���(MAX) � ��int main(void){ printf(“ char� ��� %d, ��� %d \n", CHAR_MIN, CHAR_MAX); printf("short� ��� %d, ��� %d \n", SHRT_MIN, SHRT_MAX); printf(“ int� ��� %d, ��� %d \n", INT_MIN, INT_MAX); printf(“ long� ��� %d, ��� %d \n", LONG_MIN, LONG_MAX); return 0;}

� � ��� �� ��� �� �char 1���(8�) -128 ~ +127short 2���(16�) -32768 ~ +32767

int 4���(32�) -2147483648 ~ +2147483647long 4���(32�) -2147483648 ~ +2147483647

����� ����������

실행결과char의 최소값 -128, 최댓값 127short의 최소값 -32768, 최댓값 32767int의 최소값 -2147483648, 최댓값 2147483647long의 최소값 -2147483648, 최댓값 2147483647

Friday, March 25,

Page 11: 자료형ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110325b.pdf · 2011. 3. 25. · int 4 (32 ) -2147483648 ~ long 4 (32 ) +2147483647-2147483648 ~ +2147483647 실행결과

unsigned 자료형(1/3)

11

6.2 ��� (4/10)

! ‘���� �� � � � ��� unsigned ���� ��.’! unsigned: 0� ���� ��

��� ��� �� ��� �� char (signed char)

unsigned char1���(8�)1���(8�)

-128 ~ +1270 ~ (127 + 128)

short (signed short)unsigned short

2���(16�)2���(16�)

-32768 ~ +327670 ~ (32767 + 32768)

int (signed int)unsigned int

4���(32�)4���(32�)

-2147483648 ~ + 21474836470 ~ (2147483647 + 2147483648)

long (signed long)unsigned long

4���(32�)4���(32�)

-2147483648 ~ + 21474836470 ~ (2147483647 + 2147483648)

����������������

Friday, March 25,

Page 12: 자료형ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110325b.pdf · 2011. 3. 25. · int 4 (32 ) -2147483648 ~ long 4 (32 ) +2147483647-2147483648 ~ +2147483647 실행결과

unsigned 자료형(2/3)

12

6.2 ��� (5/10)---[6-3.c ��]

#include <stdio.h>int main(void){ signed char num1=130; // -128 ~ 127� �� �� �� unsigned char num2=130; // 0 ~ 255� �� �� �� printf("%d \n", num1); // -126 � printf("%u \n", num2); // 130 � return 0;}

����� ����������

실행결과-126130

6-3.c 실습

Friday, March 25,

Page 13: 자료형ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110325b.pdf · 2011. 3. 25. · int 4 (32 ) -2147483648 ~ long 4 (32 ) +2147483647-2147483648 ~ +2147483647 실행결과

unsigned 자료형(3/3)

13

6.2 ��� (6/10)

unsigned �� � � �� ��

unsigned char 0 ~ (127 + 128)

unsigned short 0 ~ (32767 + 32768)

unsigned int 0 ~ (2147483647 + 2147483648)

unsigned long 0 ~ (2147483647 + 2147483648)

! limits.h � ���� unsigned� �� ���(MAX)

unsigned �� �(���)

unsigned char UCHAR_MAXunsigned short USHRT_MAX

unsigned int UINT_MAXunsigned long ULONG_MAX

����������������

Friday, March 25,

Page 14: 자료형ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110325b.pdf · 2011. 3. 25. · int 4 (32 ) -2147483648 ~ long 4 (32 ) +2147483647-2147483648 ~ +2147483647 실행결과

정수형은 int형을 선호한다

14

6.2 ��� (7/10)! ‘$�/� int/ �0.�.’

! char/ ��� int/ ��! %"

! CPU� int/ �# ��� &�-� "�• � ���! (,)� 32�+ "�! ��*• CPU� ��-� �� ��� '� 32�+

����������������

Friday, March 25,

Page 15: 자료형ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110325b.pdf · 2011. 3. 25. · int 4 (32 ) -2147483648 ~ long 4 (32 ) +2147483647-2147483648 ~ +2147483647 실행결과

정수형의 오버플로우/언더플로우

15

6.2 ��� (8/10)! ‘��%� �"��� ��"��� �&� �� �#�.’

! ‘�"��’ : �%� ��$ � �� �� ���� ! � ��

! ‘��"��’ : �%� ��$ � �� � ���� �� � ��

����������������

Friday, March 25,

Page 16: 자료형ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110325b.pdf · 2011. 3. 25. · int 4 (32 ) -2147483648 ~ long 4 (32 ) +2147483647-2147483648 ~ +2147483647 실행결과

정수형의 오버플로우/언더플로우

16

6.2 ��� (9/10)---[6-4.c ��]#include <stdio.h>int main(void){ char num1=-129; // ��(-128)� -1�� �� � ��( ����) char num2=128; // ���(127)� +1�� � � ��(�����) printf("%d \n", num1); // 127 �� printf("%d \n", num2); // -128�� num1=-130; // ��(-128)� -2�� �� � ��( ����) num2=129; // ���(127)� +2�� � � ��(�����) printf("%d \n", num1); // 126 �� printf("%d \n", num2); // -127�� return 0;}

����������������

6-4.c 실습

Friday, March 25,

Page 17: 자료형ropas.snu.ac.kr/~gslee/lecture-slides/c2011-01/20110325b.pdf · 2011. 3. 25. · int 4 (32 ) -2147483648 ~ long 4 (32 ) +2147483647-2147483648 ~ +2147483647 실행결과

정수형의 오버플로우/언더플로우

17

6.2 ��� (10/10) ---[6-4.c ]

char num1=-129; // ����� -1�� �� � ��(�����)char num2=128; // ����� +1�� � � ��( ����)

num1=-130; // ���(-128)�� -2�� �� � ��(�����)num2=129; // ���(127)�� +2�� � � ��( ����)

����������������

6-4.c 실습

Friday, March 25,