Download presentation
Presentation is loading. Please wait.
1
Chapter 04 자료 유형
2
변수 저장 공간 프로그램에서 자료 값을 임시로 기억할 수 있는 저장 공간을 변수(variables)
임시라는 말을 이용하는 이유는 변수라는 기억 장소는 프로그램이 종료되거나 또는 프로그램 중간이라도 소멸될 수 있기 때문 변수(Variables)는 프로그램에서 이용하는 저장장소로 실제적으로는 컴퓨터의 메모리(Memory)라는 하드웨어에 저장 변수는 값을 저장하는 상자나 저장창고라고 이해하면 쉽고, 이 상자의 위치는 메모리에 존재
3
자료 유형의 종류와 크기 기본 자료형 변수 자료형 두 가지로 분류하면 정수형과 부동소수형
이는 자료의 종류와 자료를 저장할 수 있는 공간의 크기에 따라 나눈 것 변수 물건을 담는 박스라고 생각한다면 박스의 크기에 따라 담을 물건이 제한됨 즉 작은 박스에 부피가 적당한 책을 담을 수는 있어도, 작은 박스에 커다란 코끼리를 담을 수는 없음 기본 자료형은 세가지로 분류하여 문자형, 정수형, 부동소수형으로 나누기도 함 자료형 변수가 가질 값의 종류가 자료형이고, 변수는 값이 저장될 공간이므로 변수의 자료형에 따라 변수가 저장될 공간의 크기와 내부 저장 방식이 결정
4
자료 유형 저장 값의 종류는 다양 124와 같은 일반 정수에서부터 3.14와 같은 소수, ‘a’와 같은 문자 등 다양한 종류의 값을 저장 다양한 자료 값의 종류가 프로그램 언어마다 고유하게 정해져 있는 것이 일반적 자료 유형 이 변수에 저장되는 값의 종류를 자료 유형(data types) 또는 간단히 자료형이라고도 함 C 언어에는 자료형을 크게 기본 자료형(basic type)과 유도 자료형 (derived type)으로 구분 유도 자료형에는 배열, 구조체, 공용체 등 C 언어의 기본 자료형은 모두 12가지 기본 자료형의 두 가지 부류는 정수형(integral type)과 부동소수형(floating pointing type) 정수형은 -3, 5, 100과 같은 정수 값을 저장하는 공간을 의미하며, 부동소수형은 3.14, 와 같은 소수 형태의 수
5
자료유형의 종류 모두 12가지 변수가 가질 값의 종류가 자료형이고, 변수는 값이 저장될 공간이므로 변수의 자료형에 따라 변수가 저장될 공간의 크기와 내부 저장 방식이 결정 괄호는 생략 가능하다는 것을 의미 문장 char c;는 변수 이름 c를 자료형 char로 선언하는 문장 정수형 문자형 char signed char unsigned char (signed) short (int) (signed) (int) (signed) long (int) unsigned short (int) unsigned (int) unsigned long (int) 부동소수형 float double long double 자료형 변수이름; char c;
6
변수 선언 선언 메모리 공간의 확보 저장 공간인 변수는 사용하기 전에 반드시 선언(declaration)을 먼저 하고 이용
이것은 C 언어의 중요한 규칙으로 강력한 자료형 언어(Strong Type Language)라 함 Visual Basic은 변수의 선언없이 이용가능 선언도 하나의 문장으로 반드시 세미콜론으로 종료 메모리 공간의 확보 변수 선언은 메모리에 자료 유형에 맞는 크기의 저장 공간을 확보하라는 중요한 의미의 문장 비쥬얼 C++를 이용하는 경우, 이 변수를 위한 저장 공간의 크기는 4바이트, 즉 32비트 공간 확보 자료유형12가지중의하나 변수이름; int money;
7
변수 선언 의미 유형, 값, 이름 변수의 초기 값 int year; int year = 12;
변수는 변수 선언된 이후에 중요한 세 가지 의미를 갖는데, 자료 유형, 값, 이름 변수 year는 이름이고, 자료유형은 int이며, 값은 아직 미정 변수의 초기 값 변수를 선언하면서 바로 값을 저장하려면, 다음과 같이 변수이름에 이어서 대입연산자 =와 원하는 값을 기술 int year; int year = 12;
8
변수 선언 위치 선언 시 주의 변수의 선언은 반드시 main() 함수의 첫 줄에서부터 시작하며, 선언문이 아닌 다른 문장이 먼저 나오면 그 이후에는 선언문 이용 불가능 다음 구문은 컴파일 시간에 에러 … int main(void) { 변수 선언문; 일반 문장; } … int main(void) { int year; year = 2005; int month; }
9
상수 선언 상수(constant number) 선언 변수 값으로 초기 값을 저장 한 후 수정할 수 없는 수
프로그램에서 변수 선언 이후, 수정할 필요가 없는 수를 상수로 정의하여 이용 선언 변수를 상수(constant number)로 선언하기 위해서는 변수 선언 시 키워드 const를 자료유형 앞에 기술 반드시 선언하면서 초기 값으로 값을 저장해야 하며, 다음은 에러 const double phi = 3.14; const double phi; phi = 3.14;
10
예제 소스 Year.c 오늘의 날짜를 변수 세 개에 저장하여 출력하는 프로그램을 작성
변수의 선언은 main() 함수의 첫 줄에서부터 시작 변수는 year, month, date로 하며, printf()를 이용하여 출력
11
정수형 자료 정수형 signed와 unsigned
정수형은 큰 의미에서는 문자형을 포함한다고 보고, 좁은 의미에서는 문자형을 제외한 순수하게 정수를 저장하는 자료 유형이라고 볼 수 있음 정수형은 키워드 int를 기본으로 하며, int 자료유형에서 파생된 자료유형 short int와 long int가 있음 자료형 short int는 간단히 short라고 할 수 있고, 마찬가지로 long int는 long 각각 저장 크기가 다름 signed와 unsigned 키워드 signed는 생략이 가능 unsigned는 0과 양수만 표현
12
정수형 6가지 좁은 의미의 정수형은 모두 6가지 정수를 저장하는 자료형의 종류는 short, int, long 세 가지이며, 여기에 signed와 unsigned를 지정할 수 있으므로 모두 6가지
13
signed int 자료형 signed int의 범위 MSB
가장 왼쪽의 비트가 0이면 양수 또는 0을 의미하며, 가장 왼쪽의 비트가 1이면 음수 수의 부호를 의미하는 저장공간의 최고 비트를 부호 비트(Signed Bit), 또는 최상위 비트(Most Significant Bit) -231 <= singed int <=
14
unsigned int 0과 양수만 표현 정수 자료형 unsigned int의 크기가 32 비트이면 0과 양수만 표현이 가능하므로 0에서부터 232-1까지 표현이 가능 정수 자료형 unsigned int에서는 최상위 비트(Most Significant Bit)가 부호 비트로서의 역할을 상실 0 <= unsinged int <=
15
short과 long short int long int
정수 자료형 signed short의 크기가 16 비트이면 음수부터 양수까지 표현이 가능 -215에서부터 215-1까지 표현이 가능 마찬가지로 unsigned short의 범위는 다음 long int 정수 자료형 signed long의 크기가 32 비트이면 음수부터 양수까지 표현이 가능 -231에서부터 231-1까지 표현이 가능 마찬가지로 unsigned long의 범위는 다음 -215 <= signed short int <= 0 <= unsigned short int <= -231 <= signed long int <= <= unsigned long int <=
16
오버플로우 overflow 정수 자료형에서 저장 할 수 있는 범위의 수보다 더 큰 수나 작은 수를 저장한다면 오버플로우(overflow)가 발생 정수 자료형 signed int(크기가 32 비트)에서 가장 큰 수인 231-1( )에 1을 더한 수를 signed int에 저장하면 오버플로우가 발생 를 저장할 수 없고, 이 됨 위에서 나온 결과 값인 은 signed int에서 이 아니고 임
17
자료 값의 순환 정수 자료형 signed int의 크기가 32 비트이면 -231에서부터 231-1까지 표현이 가능
18
예제 소스 Overflow.c 정수 자료형 signed int에서 가장 큰 수인 231-1과 가장 작은 수인 -231을 각각 변수에 저장 제곱 승을 구하기 위하여 함수 pow()를 이용 이 함수를 이용하기 위해서는 #include 문으로 math.h인 헤더 파일을 추가 변수 max, min 에서 각각 1을 더한 수와 1을 뺀 수를 변수에 저장하여 출력
19
문자형 char 문자 유형은 모두 1 바이트, 즉 8 비트로 구성되며, 다음과 같이 세 가지 종류 signed char
unsigned char 문자형은 키워드 char로 표현하며, 키워드 char 앞에 signed와 unsigned가 올 수 있다. 그러나 short, int, long과는 다르게 signed char가 항상 char와 같은 표기는 아니다. 컴파일러에 따라 char는 signed char, unsigned char 문자는 하나의 영문자를 구성 영문자를 그대로 표현하기 위해서는 반드시 작은 따옴표인 인용부호(quote) ‘ char c = ‘a’;
20
문자형의 표현 문자의 내부 값 문자형 자료형은 넓은 의미로 정수형 자료형
메모리에는 문자가 저장되는 것이 아니라 문자에 대응되는 정수 저장 문자 a의 아스키 코드 값이 문자형 자료형은 넓은 의미로 정수형 자료형 이유는 문자형의 내부 표현이 정수형의 내부 표현과 같고, 정수의 저장 공간으로 이용이 가능하기 때문 문자형 자료의 저장 공간은 1 바이트, 즉 8 비트이고 키워드 signed, unsigned에 따라 저장 자료의 범위가 결정 문자형 변수는 내부적으로는 정수형이므로 산술연산이 가능 문자 ‘A’의 다음 두 번째 문자인 ‘C’가 출력 char c = ‘a’; char uppercase = ‘A’; printf("대문자 C 출력 > %c\n", uppercase+2);
21
문자의 다른 표현 \t 주로 인쇄할 수 없는 문자와 특수한 문자는 탈출 기법(escape sequences)을 이용하여 표현 한 예로 수평 탭 문자는 \t로 표현 수평 탭 문자는 하나의 문자이지만 \와 t의 두 문자의 조합으로 구성되는데 이러한 표현 방법을 탈출 기법(escape sequences) \nnn 문자의 표현 방법에서 다른 하나의 방법은 하나의 문자 코드 값을 역슬래쉬와 함께 팔진수 값으로 표현하는 방법 즉 수평 탭 문자는 \011으로 표현 즉 모든 문자는 \nnn 방법으로 표현이 가능 char alarm = ‘\a’; char quote = ‘\042’;
22
특수 문자 표 주로 이용하는 특수 문자 표 문자이름 영문 표현 정수값 \nnn 표현 의미 경고 7 \007 \a 경고음이 울림
주로 이용하는 특수 문자 표 문자이름 영문 표현 정수값 \nnn 표현 의미 경고 BEL (Bell) 7 \007 \a 경고음이 울림 수평탭 HT (Horizontal tab) 9 \011 \t 수평으로 다음 탭만큼 이동 개행문자 LF (Linefeed) 10 \012 \n 다음 줄로 이동 폼피드 FF (Formfeed) 12 \014 \f 새 페이지의 처음으로 이동 캐리지 리턴 CR (Carriage return) 13 \015 \r 현재 줄의 처음으로 이동 큰따옴표 Double quote 34 \042 \” “ 문자 작은따옴표 single quote 39 \047 \’ ‘ 문자 역슬래쉬 Backslash 92 \134 \\ \ 문자
23
예제 소스 Char.c 문자형 변수 alarm, quote, uppercase 3개에 각각 ‘\a’, ‘\042’, ‘\101’ 세 값을 저장하여 출력
24
부동 소수형 float, double, long double 정수가 아닌 소수를 저장하는 변수의 자료형을 부동 소수형
자료형 double은 float보다 표현 범위가 크고, 정밀도도 정확하여 표현 범위는 대략 에서 이고, 소수점 이하 15자리까지 표현 long double은 double보다 더 큰 저장공간을 할당하려는 의도에서 만들어졌으나 컴파일러마다 다르며, 특히 비쥬얼 C++에서는 long double도 double 과 마찬가지로 64비트의 저장공간을 할당 float < double <= long double
25
예제 소스 Floatsize.c 결과 부동소수형의 세 가지 유형으로 변수를 저장하고, 출력하는 프로그램을 작성
위 변수나 자료형의 크기를 연산자 sizeof를 이용하여 출력 출력 함수 printf()에 이용되는 변환명세인 %20.18f의 의미는 부동소수형을 출력할 때, 출력 폭을 20으로, 소수점 이하를 18자리수로 출력하라는 의미 결과 자료형 float는 소수점 이하 6자리까지 표현이 가능하므로 변수 C의 출력이 소수점 이하 7자리부터는 의미가 없으며, 마찬가지로 자료형 double은 소수점 이하 15자리까지만 의미가 있음
26
12가지 자료형 기본 자료형 기본 자료형은 모두 12가지로 비쥬얼 C++인 경우, 다음과 같이 정리
27
예제 소스 Sizeof.c sizeof 이용법 기본 자료형 12가지의 저장 공간의 크기를 출력하는 프로그램
결과 값은 크기의 바이트 값 sizeof 이용법 sizeof (변수) sizeof 변수 sizeof (자료형 키워드)
28
프로그램 연습 프로그램 목적 내용 자료형 long과 unsigned에 각각 자료 값 22억을 저장하고 각 값을 출력
자료형 char에 문자 ‘A’를 저장하고 문자와 코드 값을 각각 출력 내용 자료형 long과 unsigned은 그 저장 범위인 22억을 벗어난다면 오버플로우가 발생
Similar presentations