제3장 변수와 자료 제4장 전처리와 입출력
변수와데이터형 (variables and data types) 정수 ( Whole Numbers) 를나타내는자료형 char short int 소수를나타내는자료형 ( Fractions) float, double 수식어 (Modifier) signed unsigned 데이터형의재정의 (Redefining Data Types) typedef 한밭대정보통신공학과 и чунг хо 2
변수 : 변하는수, 대입연산자 = 로다른값을계속대입할수있다. C 언어에서변수는크게소수형과정수형으로분류 정수형 : char, short, int ( 각각 1 byte, 2 bytes, 4 bytes) 소수형 : float, double ( 각각 4 bytes, 8 bytes 크기가짐 ) 이상 5 가지가중요하며다음사항을주의한다. long, long int 는여러분의 PC 에서는같음. long double 은 double 과같음. 수식어 : unsigned 가정수형에붙으면 0 에서부터시작하는양의정수를의미함. 표현가능한정수의폭이양의쪽으로이동. signed 는생략가능하며음수양수표현가능. 한밭대정보통신공학과 и чунг хо 3
char : 원래 ASCII 데이터를나타내기위한것이나 1 바이트크기의정수를나타낼수있음. ASCII 는북미표준 : 쉽게미국표준이며알파벳과숫자등을표현. 7 bits 를이용하여 128 개를표현가능. 8 bits 까지이용하여 256 개까지는표현가능. short: 2 bytes, short int 와같은형임. int : 4 bytes 보통정수를나타내는경우에많이사용됨. 총 32 바이트이며, unsigned 라는수식어가붙으면양의정수임. 프로그래머가숫자를표현식등에서숫자를소숫점없이쓰면디폴트로 int 형으로간주됨. 한밭대정보통신공학과 и чунг хо 4
floating point number 를나타낼수있음. float: 4 bytes 소수를나타낼때에쓰며메모리를절약하고자할때 double 형대신에사용함. double: 8 bytes 숫자를소숫점과함께쓰면 ( 예 3.2) 디폴트로 double 형으로간주됨. 대부분의함수의매개변수가 double 형으로되어있음. float 보다정밀한계산이가능함. 한밭대정보통신공학과 и чунг хо 5
signed : 음수양수다표현가능하며보통생략됨 unsigned : 0 부터시작하여양의정수만표현가능함. 두수식어는정수형데이터앞에서만수식어로사용가능함. 한밭대정보통신공학과 и чунг хо 6
유도자료형 (derived data types) 배열 : 같은자료형을번호를매겨서구분하는것 열거형 : 기억하기쉬운상수들을영어단어에매칭시키는자료형 구조체 : 데이터의다발. 명함과같이이름, 주소, 전화번호, 소속등한개의카드에데이터가묶여있는것과같은형태임 공용체 : 구조체와비슷하나같은메모리장소를필요한때마다다른데이터가사용하도록하는형태임 한밭대정보통신공학과 и чунг хо 7
PHI 와같이정해진수. 기억하기좋은이름으로만들어놓고반복하여사용 선언 : 다음과같은 2 가지방법이있음 #defined PHI 3.141592 const double PHI=3.141592 한밭대정보통신공학과 и чунг хо 8
Overflow: 정수형데이터타입에서표현할수있는수보다커서용량보다넘칠경우가장작은수로표현되는것. signed 인경우 overflow 가생기면음수로나타남. Underflow: 정수형데이터타입에서표현할수있는수보다작을경우가장큰수로표현되는것. signed 인경우 underflow 가생기면양수로나타남. 한밭대정보통신공학과 и чунг хо 9
typedef 예전에컴파일러의차이점때문에자료형을일치시키기위해사용된것. 현재는유도자료형의선언부분을짧게표현하기위해많이사용됨. 다음과같은것도가능. typedef int 정수 ; // 다음부터는정수 a=3; // 이렇게쓸수있음. 한밭대정보통신공학과 и чунг хо 10
변수와데어터형 (variables and data types) 정수 ( Whole Numbers) 를나타내는자료형 char short int 소수를나타내는자료형 ( Fractions) float, double 수식어 (Modifier) signed unsigned 데이터형의재정의 (Redefining Data Types) typedef 한밭대정보통신공학과 и чунг хо 11
컴파일러와전처리기 (compiler and preprocessor) 헤더파일 (header files) 시스템정의함수 (System-defined) 사용자정의함수 (User-defined) 매크로함수 (a macro function) 의정의 문자열의입력과출력함수 한밭대정보통신공학과 и чунг хо 12
#include 나 #define 부분을전처리기라고부름 포함시키지않고프로그래머가직접작성한소스코드를컴파일하기전에먼저처리하는프로그램 #include < 헤더파일이름 > 보통.h 로끝나는헤더파일을포함시킴. 헤더파일들은 Visual Studio 가설치된폴더의하위폴더중에있음. 프로그래머가작성한파일을포함시키려면 myheader.h 와같이 를사용하여야함. #define 를이용하여상수를선언하거나매크로함수를작성할수있음. 한밭대정보통신공학과 и чунг хо 13
#include 나 #define 부분을전처리기라고부름 포함시키지않고프로그래머가직접작성한소스코드를컴파일하기전에먼저처리하는프로그램 #include < 헤더파일이름 > 보통.h 로끝나는헤더파일을포함시킴. ( 시스템헤더파일 ) 헤더파일들은 Visual Studio 가설치된폴더의하위폴더중에있음. 프로그래머가작성한파일을포함시키려면 myheader.h 와같이 를사용하여야함. ( 사용자헤더파일이라부름 ) #define 를이용하여상수를선언하거나매크로함수를작성할수있음. 한밭대정보통신공학과 и чунг хо 14
stdio.h : printf(), scanf(), gets(), puts() 함수사용시 stdlib.h : malloc(), calloc(), rand(), srand() 등함수사용시 math.h : sin(), cos(), tan(), asin(), acos(), atan(), log(), log10(), pow() 등수학관련함수사용시 string.h : strlen(), strstr(), strcmp(), strcpy(), strchr(), strtok() 등문자열관련함수사용시 time.h : time() 함수사용시 conio.h: getch(), putch(), getche(), putche() 등콘솔관련함수사용시 한밭대정보통신공학과 и чунг хо 15
#define SQUARED(x) ((x)*(x)) #define CUBED(x) ((x)*(x)*(x)) 또는 SQUARED(x) 가선언된이후에는다음과같이해도된다. #define CUBED(x) (CUBED(x) *(x)) 중요한것은모든변수를괄호 () 로둘러싸야된다는점이다. 그렇지않은경우 x에 3+2를대입하는경우 3+2*3+2와같이되어계산결과가틀려진다. 한밭대정보통신공학과 и чунг хо 16
scanf() #include <stdio.h> int main() { int x=3; scanf( %d, &x); // 변수앞에 &( 앰퍼샌드 ) 삽입 return 0; } //scanf 함수는변수를주솟값으로읽도록되어 // 있으므로반드시 & 를붙여야함. 한밭대정보통신공학과 и чунг хо 17
%d %i : 정수형자료입력포맷, decimal, integer 의앞글자로암기 %u : 자료형 unsigned int 형정수입력포맷 %o : octal 곧 8 진수입력으로간주 %x %X : hexadecimal 즉 16 진수입력으로간주 %f : float 자료형입력으로간주 %lf : double 자료형으로간주, long float 로암기 %e %E : exponetial 즉지수형자료형으로간주 %c : char 형자료형으로간주 %s : 문자열자료형으로간주 %p : 주솟값으로 16 진수입력으로간주됨. 포인터입력으로간주. 한밭대정보통신공학과 и чунг хо 18
printf() printf( 랄라라라 ); printf( x=%d\ty=%d\n, x, y); 로둘러싸인제어문자열다음에쉼표그다음에제어문자열에포함된출력포맷 (%d %i 등 ) 에출력할변수또는표현식이온다. 변수는변수명을그대로써주면되고, 표현식은계산된결과가 % 포맷에따라서출력된다. 한밭대정보통신공학과 и чунг хо 19
%d %i : 정수형자료출력포맷, decimal, integer 의앞글자로암기 %u : 자료형 unsigned int 형정수출력포맷 %o : octal 곧 8 진수출력으로간주 %#o : 출력시 8 진수임을나타내는 0 을숫자앞에출력. %x %X : hexadecimal 즉 16 진수출력으로간주 %#x %#X : 16 진수를나타내는 x 또는 X 를숫자앞에출력. 대소문자구분함. %f : float 자료형출력으로간주 %lf : double 자료형으로간주, long float 로암기 %e %E : expential 즉지수형자료형으로간주 %g : %lf 와 %E 중에서단순한형태로보여줌. %c : char 형자료형으로간주 %s : 문자열자료형으로간주 %p : 주솟값으로 16 진수입력으로간주됨. 포인터입력으로간주. 한밭대정보통신공학과 и чунг хо 20
실수의경우 %f : 소숫점아래 6 자리를디폴트로프린트함 %10.2f: 10 자리를잡아서소숫점 2 자리까지프린트함 %-10.2f: 위와같으나왼쪽정렬하며프린트함 %lf 의경우도 %f 와동일함. 정수의경우 %d : 디폴트로 6 자리잡아서오른쪽정렬하여프린트함 %10d: 10 자리잡아서오른쪽정렬하여프린트함. %-10d: 10 자리잡아서왼쪽정렬하여프린트함. %+10d: 양의정수인경우에 + 기호를프린트해줌. 한밭대정보통신공학과 и чунг хо 21
\ 백슬래시 \ : 인용부호 를프린트함 \\ : 백슬래시자체를프린트함. \t : 탭키만큼공백인쇄. \n : 줄을바꾸어줌. 한밭대정보통신공학과 и чунг хо 22
getchar() char ch; ch = getchar(); // 매개변수없음, 한글자입력받아 ch 에대입 // 만약 getchar(); 라고만하면한글자를받아서버리는효과가있으므로화면을일시적으로멈출때사용가능. putchar(ch) putchar(ch); //ch 값을화면에인쇄 한밭대정보통신공학과 и чунг хо 23
컴파일러와전처리기 (compiler and preprocessor) 헤더파일 (header files) 시스템정의함수 (system-defined) 사용자정의함수 (user-defined) 매크로함수 (a macro function) 의정의 문자열의입력과출력함수 한밭대정보통신공학과 и чунг хо 24