Chapter 03 변수와자료형 2009 한국항공대학교항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 1 변수와자료유형 변수 프로그램에서자료값을임시로기억할수있는저장공간을변수 (variables) 변수 (Variables) 는컴퓨터의메모리인 RAM(Random Access Memory) 에저장 물건을담는박스라고생각한다면박스의크기에따라담을물건이제한됨 자료유형 이변수에저장되는값의종류를자료유형 (data types) 또는간단히자료형이라고도함 C 언어에는자료형을크게기본자료형 (basic type) 과유도자료형 (derived type) 으로구분 유도자료형에는배열, 구조체, 공용체등 2
자료유형의종류와크기 적당한자료유형 3 자료유형의종류 모두 12 가지 ( 기본 3 가지 int, char, double) 변수가가질값의종류가자료형 변수의자료형에따라변수가저장될공간의크기와내부저장방식이결정 괄호는생략가능하다는것을의미 문장 char c; 는변수이름 c 를자료형 char 로선언하는문장 자료형변수이름 ; char c; 4
변수선언 선언 사용하기전에반드시선언 (declaration) ) 을먼저하고이용 선언도하나의문장으로반드시세미콜론으로종료 변수선언된이후에중요한세가지 ( 자료유형, 값, 이름 ) 의미를가짐 자료유형12가지중의하나 변수이름 ; int money; 변수의초기값 변수를선언하면서바로값을저장하려면, 다음과같이변수이름에이어서대입연산자 = 와원하는값을기술 int year = 12; 메모리공간의확보 변수선언은메모리 (RAM) 에자료유형에맞는크기의저장공간을확보하라는중요한의미의문장 5 변수선언위치 선언시주의 변수의선언은반드시함수의첫줄에서부터시작하며, 선언문이아닌다른문장이먼저나오면그이후에는선언문이용불가능 다음구문은컴파일시간에에러 int main(void) { 변수선언문 ; 일반문장 ; } int main(void) { int year; year = 2005; int month; } 6
상수선언 상수 (constant number) 변수값으로초기값을저장한후수정할수없는수 프로그램에서변수선언이후, 수정할필요가없는수를상수로정의하여이용 선언 변수를상수 (constant number) 로선언하기위해서는변수선언시키워드 const를자료유형앞에기술 const double phi = 3.14; 상수선언할때는반드시초기값을저장해야하며, 다음은에러 const double phi; phi = 3.14; 7 예제소스 예제 3-1 본인의정보를변수네개에저장하여출력하는프로그램을작성 변수의선언은 main() 함수의첫줄에서부터시작 8
정수형 6 가지 정수형 정수형은큰의미에서는문자형을포함한다고보고, 좁은의미에서는문자형을제외한순수하게정수를저장하는자료유형이라고볼수있음 좁은의미의정수형은모두 6 가지 9 자료형 signed int 의범위 signed int 정수자료형 signed int 의크기가 32 비트이면음수부터양수까지표현이가능하므로 -2 31 에서부터 2 31-1까지표현이가능 MSB 가장왼쪽의비트부호비트 (Signed Bit), 또는최상위비트 (Most Significant Bit) 부호를결정하는비트 자료형 unsigned int 의범위 0과양수만표현 정수자료형 unsigned int에서는최상위비트 (Most Significant Bit) 가부호비트로서의역할을상실 표 0.3 참조 10
short 과 long short int 정수자료형 signed short 의크기가 16 비트이면음수부터양수까지표현이가능 -2 15 에서부터 2 15-1 까지표현이가능 마찬가지로 unsigned short 의범위는다음 long int -2 15 <= signed short int <= 2 15-1 0 <= unsigned short int <= 2 16-1 정수자료형 signed long 의크기가 32 비트이면음수부터양수까지표현이가능 -2 31 에서부터 2 31-1 까지표현이가능 마찬가지로 unsigned long 의범위는다음 -2 31 <= signed long int <= 2 31-1 0 <= unsigned long int <= 2 32-1 11 overflow 오버플로 정수자료형에서저장할수있는범위의수보다더큰수나작은수를저장한다면오버플로우 (overflow) 가발생 표현할수있는수의범위가넘어가면그범위내에서값이순환 singed int 의순환 12
예제3-3 3 소스 overflow.c 정수자료형 signed int 에서가장큰수인 2 31-1 과가장작은 수인 -2 31 을각각변수에저장 제곱승을구하기위하여함수 pow() 를이용 이함수를이용하기위해서는 #include 문으로 math.h인헤더파일을추가 변수 max, min 에서각각 1 을더한수와 1 을뺀수를변수에 저장하여출력 13 문자형의표현 char 문자유형은모두 1 바이트, 즉 8 비트로구성되며, 다음과같이세가지종류 char signed char unsigned char 컴파일러에따라 char 는 signed char, unsigned char 표기 문자의내부값 메모리에는문자가저장되는것이아니라문자에대응되는정수저장 char c = a ; 따라서문자형자료형은넓은의미로정수형자료형 문자형변수는내부적으로는정수형이므로산술연산이가능 문자 A 의다음두번째문자인 C 가출력 char uppercase = A ;; printf(" 대문자 C 출력 > %c\n", uppercase+2); 14
문자코드 아스키코드이용 출력제어문자 예제 3-5 15 float, double, long double 부동소수형 float, double, long double 의순으로표현범위가크고, 세밀 float < double <= long double float 의저장공간크기 : 32 비트 (4 바이트 ) 자료형 float의표현범위는대략10-38 에서 10 38 이고, 소수점이하 6 자리까지표현이가능 double 의저장공간크기 :64 비트 (8 바이트 ) 자료형 double은 float보다표현범위가크고, 정밀도도정확하여표현 범위는대략 10-308 에서 10 308 이고, 소수점이하 15자리까지표현 long double 은 double 보다더큰저장공간을할당하려는의도에서만들어졌으나컴파일러마다다름 예제 3-6 특히비주얼 C++ 에서는 long double도 double 과마찬가지로 64 비트의저장공간을할당 16
12 가지자료형 기본자료형 기본자료형은모두 12 가지로 Visual C++ 인경우 17 예제3-7 소스 sizeof.c 기본자료형 12가지의저장공간의크기를출력하는프로그램 저장공간의크기를알수있는연산자로 sizeof를이용 연산자 sizeof 다음의변수이름으로둘러싸는괄호는생략가능 결과값은크기의바이트값 sizeof 이용법 sizeof ( 변수 ) sizeof 변수 sizeof ( 자료형키워드 ) 18
프로그래밍실습 ( 예제3-8) 프로그램목적 자료형 long과 unsigned에각각자료값22억을저장하고각값을출력 자료형 char 에문자 A A 를저장하고문자와코드값을각각출력 내용 자료형 long 과 unsigned 은그저장범위인 22 억을벗어난다면오버플로우가발생 19