C 언어 개요

Download Report

Transcript 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;
자료형(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’;
변수 선언 위치

선언 시 주의사항
 변수의 선언은 반드시 main()
수의 첫 줄에서부터 시작하며,
언문이 아닌 다른 문장이 먼저
오면 그 이후에는 선언문 이용
가능
…
함
선
나
불
int main(void)
{
변수 선언문;
…
일반 문장;
…
}
…

다음 구문은 컴파일 시간에 에러
int main(void)
{
int year;
year = 2005;
int month;
…
}
signed 와 unsigned

signed



unsigned



양수, 음수 모두 표현
범위 : int 형의 경우 -231 <= (signed) int <= 231-1
음수를 표현하지 않을 경우
범위 : int 형의 경우 0 <= unsigned int <= 232-1
MSB(Most Significant Bit)


자료형의 가장 상위(왼쪽) 비트
가장 왼쪽의 비트가 0이면 양수 또는 0을 의미하며, 가장 왼쪽의 비트가 1
이면 음수
1 0 0 0 1 0 0 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 = 3.14;
phi;
출력 함수

함수 printf()



모든 종류의 자료형을 출력하는 함수
제어문자열과 표현식을 이용하여 출력하는데, 제어문자열(control string)에는
출력하려는 표현식 값에 따라 변환명세 (conversion specification)를 차례로
기술

변환명세는 변환문자열이라고도 표현
제어문자열 내부의 변환명세는 표현식의 수와 값의 종류에 따라 서로 순서대로
일치
printf (“ … %d … %f …“, 정수표현식, 실수표현식);
이 부분이 출력 내용의 전체적인 문자
열의 구조와 변환명세를 기술하는 제어
문자열이다.
변환 명세
type
설명
예제
%c
문자형
%d or %i
10진수 정수형
%u
unsigned 10진수 정수형
%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
float f = 392.65;
printf(“f = %g”, f);
%s
문자열
char ch = ‘a’;
printf(“a = %c”, ch);
int i = 1;
printf(“i = %d”, i);
unsigned int i = 32;
printf(“i = %u”, i);
char string[20] = “c programming”;
printf(“string = %s”, string);
표준입력

함수 scanf()

함수 scanf()는 도스창인 표준 입력으로부터 여러 종류의 자료 값 입력에 이
용

함수 scanf()의 사용법은 printf()와 유사

자료형 int 변수 age에 입력 값을 저장하려면 일반 변수 앞에는 변수
의 주소를 의미하는 문자 &를 반드시 추가

&은 주소를 의미하는 연산자
scanf(“%d”, &age);
scanf() 변환 명세

함수 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);
}

기호상수의 중요성

반복되는 사용에서 오타 방지
#include <stdio.h>
#define PHI 3.141592
int main(void) {
int r =2;
int s = 3;
float circumference_r = 2 * PHI * r;
float circumference_s = 2 * PHI * s;
printf(“반지름 %d인 원의 둘레는 %f이고,
“, r, circumference_r);
printf(“반지름 %d인 원의 둘레는 %f입니
다\n“, s, circumference_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