변수와 자료형
C 언어 역사 C 언어 특징 C 언어에서 발전된 언어 1972년에 미국전신전화국인(AT&T) 벨연구소의 Ken Tompson 과 Dennis Ritchie가 개발 개발된 언어 시스템 PDP-11에서 운용되는 운영체제 Unix를 개발하기 위한 언어 BCPL(Basic Combined Programming Language) 언어에서 발전된 언어 ANSI(American National Standards Institute) C 미표준화위원회에서 공인한 표준 C를 지칭 특징 운영체제 Unix 시스템을 개발하기 위한 목적으로 고안된 언어 시스템의 세세한 부분까지 제어 가능 여러 뛰어난 기능 때문에 현재까지도 널리 활용 C 언어에서 발전된 언어 C++ JAVA C#
C 프로그램 구조 /* 주석내용 */ // 라인 주석 // 전처리기 지시자 #include <stdio.h> int main(void) { // 지역변수 선언 변수형 지역변수명; // 일반명령문 … // 메인함수의 반환 return 0; } 프로그램 실행 순서 프로그램 시작 프로그램 종료
주석 주석(Comments) 주석 표현 방법 중요성 프로그램을 설명하는 설명문을 표현하기 위한 방법 프로그래밍 언어의 문법과는 상관없음 주석 표현 방법 /* 주석 내용 */ /와 * 사이에 공백이 없어야 함 에러 : /*/* 중복 주석 불가 */*/ // 주석 내용 한 줄 설명문에 이용 / 사이에 공백 없어야 함 중요성 적절한 주석이 없는 프로그램은 이해하기 어렵고, 수정이 어려움 수도 코드(Pseudo code)
헤더파일 헤더 파일 확장자가 *.h로 일반 C 소스가 들어 있는 텍스트 파일 위치 : 프로그램 소스 파일의 처음 부분에 #include 지시자를 통해 삽입 #include 지시자 헤더파일을 프로그램에 삽입하기 위한 지시자 예. #include <stdio.h> 프로그램에 stdio.h라는 헤더 파일을 삽입 stdio.h STanDard Input Output 입력과 출력에 관련된 여러 정보가 있는 소스 파일 함수 printf()를 이용하려면 헤더 파일 stdio.h을 첨가 헤더파일 처리 작업 stdio.h 표준 입출력 작업 math.h 수학 관련 작업 string.h 문자열 작업 time.h 시간 작업 ctype.h 문자 관련 작업
변수 int student_number = 1; 변수 변수 선언 프로그램에서 임시로 자료 값을 저장할 수 있는 저장 장소 변수는 필요한 자료 값을 저장할 수 있는데, 변수를 사용하기 위해서는 사용 전에 변수 선언을 반드시 선행 변수 선언 선언이란 내부적으로는 사용할 변수의 저장 공간을 메모리의 적당한 위치에 확보하는 것 변수 선언 예 int student_number = 1; 변수선언 종료 자료형(type) 변수명(name) 초기값
자료 유형의 종류와 크기 기본 자료형 2가지로 분류 정수형과 부동소수형 3가지로 분류 정수형, 문자형, 부동소수형 정수형 char(1bytes) short(2bytes) int(4bytes) long(4bytes) 부동소수형 float(4bytes) double(8bytes) long double(8bytes)
변수 선언 선언(declaration) 자료형 변수의 초기값 변수는 사용하기 전에 반드시 선언을 먼저 하고 이용 선언 마지막에 반드시 세미콜론으로 종료 자료형 기본 자료형 7가지 중 한가지를 선택 변수의 초기값 대입(assign)연산자 “=“를 이용하여 변수 초기값 설정 예. int number = 4; float phi = 3.14159; char alpha = ‘a’;
변수 선언 위치 … int main(void) { 변수 선언문; 일반 문장; } 선언 시 주의사항 변수의 선언은 반드시 main() 함수의 첫 줄에서부터 시작하며, 선언문이 아닌 다른 문장이 먼저 나오면 그 이후에는 선언문 이용 불가능 다음 구문은 컴파일 시간에 에러 … int main(void) { int year; year = 2005; int month; }
signed 와 unsigned 1 1 1 signed unsigned MSB(Most Significant Bit) 양수, 음수 모두 표현 범위 : int 형의 경우 -231 <= (signed) int <= 231-1 unsigned 음수를 표현하지 않을 경우 범위 : int 형의 경우 0 <= unsigned int <= 232-1 MSB(Most Significant Bit) 자료형의 가장 상위(왼쪽) 비트 가장 왼쪽의 비트가 0이면 양수 또는 0을 의미하며, 가장 왼쪽의 비트가 1이면 음수 1 1 1 signed = ? unsigned = ?
12가지 자료형 기본 자료형 기본 자료형은 모두 12가지로 비쥬얼 C++인 경우, 다음과 같이 정리
오버플로우 오버플로우(overflow) 정수 자료형에서 저장 할 수 있는 범위의 수보다 더 큰 수를 저장했을 때 데이터의 손실로 인해 의도하지 않는 결과를 얻는 현상 예. signed int a = 231-1 + 1; a = ?? 해결책은 ?
상수 선언 상수(constant number) 선언 변수 값으로 초기 값을 저장 한 후 수정할 수 없는 수 프로그램에서 변수 선언 이후, 수정할 필요가 없는 수를 상수로 정의하여 이용 선언 변수를 상수(constant number)로 선언하기 위해서는 변수 선언 시 키워드 const를 자료유형 앞에 기술 반드시 선언 시 초기화를 해줘야함 const double phi = 3.14; // 에러 const double phi; phi = 3.14;
출력 함수 printf (“ … %d … %f …“, 정수표현식, 실수표현식); 함수 printf() 모든 종류의 자료형을 출력하는 함수 제어문자열과 표현식을 이용하여 출력하는데, 제어문자열(control string)에는 출력하려는 표현식 값에 따라 변환명세 (conversion specification)를 차례로 기술 변환명세는 변환문자열이라고도 표현 제어문자열 내부의 변환명세는 표현식의 수와 값의 종류에 따라 서로 순서대로 일치 printf (“ … %d … %f …“, 정수표현식, 실수표현식); 이 부분이 출력 내용의 전체적인 문자열의 구조와 변환명세를 기술하는 제어문자열이다.
변환 명세 type 설명 예제 %c 문자형 char ch = ‘a’; printf(“a = %c”, ch); %d or %i 10진수 정수형 int i = 1; printf(“i = %d”, i); %u unsigned 10진수 정수형 unsigned int i = 32; printf(“i = %u”, i); %x 16진수 정수형 int i = 0x7fa; printf(“i = %x”, i); %o 8진수 정수형 int i = 027; printf(“i = %o”, i); %e 부동소수형 double d = 3.9265e2; printf(“d = %e”, d); %f float f = 392.65; printf(“f = %f”, f); %g Use shorter %e or %f printf(“f = %g”, f); %s 문자열 char string[20] = “c programming”; printf(“string = %s”, string);
표준입력 scanf(“%d”, &age); 함수 scanf() 함수 scanf()의 사용법은 printf()와 유사 자료형 int 변수 age에 입력 값을 저장하려면 일반 변수 앞에는 변수의 주소를 의미하는 문자 &를 반드시 추가 &은 주소를 의미하는 연산자 scanf(“%d”, &age);
scanf() 변환 명세 scanf(“%d %f”, &age, &weight); 함수 scanf()에서 임의의 갯수의 입력을 받을 수 있고, 이런 경우 적절히 변환 명세를 이용하여 입력 값을 지정 scanf(“%d %f”, &age, &weight); 변환 명세 의미 %d, %i 정수 자료형에 정수 저장 %u 자료형 unsigned int형에 정수 저장 %o 정수 자료형에 8진수 형태 입력 값 저장 %x, %X 정수 자료형에 16진수 형태 입력 값 저장 %f 실수 float 자료형에 소수 형태 입력 값 저장 %lf 실수 double 자료형에 소수 형태 입력 값 저장 %e, %E 지수형 형태의 실수 자료값을 저장 %c 문자 자료형에 문자 저장 %s 여러 개 일련의 문자인 문자열(string) 저장 %p 주소 값으로 16진수의 unsigned int 형을 저장
기호상수 정의 #define 지시자 기호상수의 중요성 소스에서 지정된 기호상수 (symbolic constant)를 정의된 치환문자열로 대체(치환)하기 위한 지시자 예. 원주율 3.141592를 기호상수로 정의하라 기호상수의 중요성 반복되는 사용에서 오타 방지 #include <stdio.h> int main(void) { int r =2; int s = 3; float circumference_r = 2 * 3.141592 * r; float circumference_s = 2 * 3.141592 * s; printf(“반지름 %d인 원의 둘레는 %f이고, “, r, circumference_r); printf(“반지름 %d인 원의 둘레는 %f입니다\n“, s, circumference_s); } #define PHI 3.141592 float circumference_r = 2 * PHI * r; float circumference_s = 2 * PHI * s;
키워드(예약어) 프로그램 언어마다 고유한 키워드(keyword)를 갖는데, C 언어는 32개의 기본 키워드 미표준화위원회 ANSI에서 지정한 C 언어의 32개의 키워드로, 전처리기 지시자는 키워드에서 제외된다. 이러한 키워드는 프로그램 언어에서 문법적인 의미를 갖음
식별자(Identifier) 식별자 식별자는 프로그램 작성을 위하여 사용자가 직접 정의하여 사용하는 여러 단어를 말하는데, 주로 변수이름과 함수이름 등을 말함 프로그램 내부의 일정한 영역에서 식별자는 서로 구별되어야 하며, 키워드는 식별자로 이용 불가능 식별자 작성 규칙 식별자를 구성하는 문자는 영문 대소문자(A~Z, a~z), 숫자(0~9), 밑줄(_)의 63개 뿐이다. 식별자의 첫 글자는 숫자를 이용할 수 없다. 대소문자는 구별하며, 키워드는 사용할 수 없다. 바른 식별자 잘못된 식별자 count1 employee_no KOREA _identifier _my_name worldcup2002 firstYear 1count #employee 2002_Korea _@korea Case 88olympic name_first