C 언어 개요

Download Report

Transcript C 언어 개요

변수와 자료형
C 언어 역사



C 언어
 1972년에 개발된 언어
 시스템 PDP-11에서 운용되는 운영체제 Unix를 개발하기 위한 언
어
 미국전신전화국인(AT&T) 벨연구소의 Dennis Ritchie가 개발
 Ken Tompson이 개발한 B 언어에서 발전된 언어
 ANSI(American National Standards Institute) C
 미표준화위원회에서 공인한 표준 C를 지칭
특징
 운영체제 Unix 시스템을 개발하기 위한 목적으로 고안된 언어
 시스템의 세세한 부분까지 제어 가능
 여러 뛰어난 기능 때문에 현재까지도 널리 활용
C 언어에서 발전된 언어
 C++
 JAVA
 C#
C 프로그램 구조
/* 주석내용 */
// 라인 주석
// 전처리기 지시자
#include <stdio.h>
int main(void)
{
// 지역변수 선언
변수형 지역변수명;
// 일반명령문
…
// 메인함수의 반환
return 0;
}
프로그램 시작
프로그램 실행 순서
프로그램 종료
주석


Comments

주석은 프로그램 언어의 문법과는 관계없이 프로그램을 설명하는 설명문을 표
현하기 위한 방법

C 언어의 주석은 원래 /* … */로 이용하다가 C++ 언어가 나오면서 //..을
추가
두 가지 방법

주석의 시작 부분인 /와 * 사이에 공백이 없어야 하며, 마찬가지로 주석 종료
부분인 *와 / 사이에도 공백이 없어야 함

주석 /* … */은 여러 줄에 걸쳐 계속해서 설명문을 이용할 때 유용

중복 주석 불가 – 에러
/*
/*********************************************
* 중복 주석 에러
*********************************************/
*/
주석 //은 // 이후부터 그 줄 끝까지 설명문을 넣을 수 있음

//은 한 줄 설명문에 이용
중요성

적절한 주석이 없는 프로그램은 이해하기 어렵고, 수정이 어려움

수도 코드(Pseudo code)


컴파일러와 전처리기

전처리기(preprocessor)
 미리 처리하는 프로
그램으로, 컴파일러
가 일을 하기 전에 먼
저 처리하는 프로그
램이라는 의미
 컴파일러는 전처리기
의 처리 결과인 소스
를 컴파일
 전처리기는 넓은 의
미로 컴파일러의 일
부분
전처리기


전처리기 명령어
 전처리기가 처리하는 명령어는 C 언어 자체의 명령어와 구별
 이것을 전처리기 지시자(preprocessor directives) 또는 전처리기
명령어라 함
 전처리기의 대표적인 지시자가 #include 문
#include
 전처리기 지시자는 항상 #으로 시작하고, 한 줄에 하나의 지시자
만을 기술
 일반 문장과는 다르게 지시자 마지막에 세미콜론(;)은 없음
 지시자 include는 #include로 기술하여 다음 <…> 사이에 헤더파일
이름이 기술
#include <헤더파일이름>
#include


#include <stdio.h> 지시자
 위치에 파일 stdio.h라는 파일을 컴파일하기 전에 읽어 삽입하는 역할
을 수행
헤더 파일
 헤더 파일은 확장자가 *.h로 일반 C 소스가 들어 있는 텍스트 파일
 헤더 파일 stdio.h에는 입력과 출력에 관련된 여러 정보가 있는 소스
파일
 함수의 정보인 함수원형과 여러 전처리기 지시자를 의미
 함수 printf()를 이용하려면 헤더 파일 stdio.h을 첨가
 일반적으로 헤더파일은 소스의 처음 부분에서 삽입
 파일 이름 stdio.h는 표준 입출력(STanDard Input Output)에서 따
오고, 확장자 h는 헤더 파일이라는 h
시스템, 사용자 헤더파일


시스템 헤더 파일
헤더파일
처리 작업
stdio.h
표준 입출력 작업
math.h
수학 관련 작업
string.h
문자열 작업
time.h
시간 작업
ctype.h
문자 관련 작업
사용자 헤더 파일
 시스템 헤더파일과 같이, 필요하면 프로그래머도 직접 헤더파일 생성
가능
 사용자가 직접 작성한 헤더파일은 지시자 #include를 이용하는 경우
 다음과 같이 큰 따옴표를 이용
#include <stdio.h>
#include “myheader.h”
사용자 헤더파일

header.c와 myheader.h로 나누어 처리
 헤더 파일 myheader.h는 소스 header.c와 동일한 폴더에 저장
 소스파일 header.c 와 헤더파일 myheader.c
개발도구

Visual C++에서의 헤더 파일
 비쥬얼 C++에서는 개발 도구 환경에서 사용자가 직접 만든 헤더 파
일만을 구분할 수 있는 창을 제공
 다음 그림과 같이 왼쪽 창의 Header Files 폴더 하부에 헤더 파일
myheader.h를 만들도록
기호상수 정의

#define
 전처리기 지시자인 #define은
 소스에서 지정된 기호상수 (symbolic constant)를 정의된 치환
문자열로 대체(치환)
 일반적으로 프로그램의 이해를 쉽게 하기 위하여 기호상수는
대문자로 기술
 #define 지시자 하부의 소스에서 PHI라는 식별자는 항상 3.141592
라는 값으로 대체
기호상수의 필요성

장점
 지시자 #define은 시스템에 따라 변할 수 있는 상수를 한번에 수정할
수 있고, 수정되는 한 부분만 검사하면 되므로 이식성과 신뢰성이 증
대
 이식성은 portability 라고 하며 한번 구현한 프로그램은 여러 시
스템에서 쉽게 실행 가능함을 말함
지시자는 한 줄에

줄의 마지막 \
 지시자 #define에서 치환문자열이 길어 한 줄에 코딩이 불편한 경우,
계속되는 줄 끝에 역슬래쉬 \를 넣어 줄이 계속되고 있음을 표시해야
함
 모든 지시자는 원칙적으로 한 줄에 하나의 지시자를 코딩 해야 하므로
여러 줄의 지시자를 입력하기 위해서는 줄 끝에 역슬래쉬 \를 이용
#define MSG “프로그램 언어의 학습은 일반
언어의 학습과 마찬가지로 반복학습이 중요하다”
#define MSG “프로그램 언어의 학습은 일반
\
언어의 학습과 마찬가지로 반복학습이 중요하다”
인자의 필요성

인자가 없는 기호상수
 지시자 #define의 바로 뒤에 나오는 문자열을 기호상수 또는 매크로
 지시자 #define에서 기호상수 뒤에 오는 치환문자열에는 일반 상수,
상수의 연산, 이미 정의된 기호상수 등이 올 수 있음
 다음과 같이 수의 제곱승을 구하는 매크로를 만든다고 하자. 그러나
아래 소스는 원하는 정수에 대하여 매크로를 모두 만들어야 하는 문제
#define SQUARE2 2 * 2
#define SQUARE3 3 * 3
…
printf(“%d, %d”, SQUARE2, SQUARE3);
2 * 2 로 치환
3 * 3 로 치환
인자의 이용

인자가 있는 기호상수
 위의 문제를 해결하는 방안이 인자(parameter)를 이용하는 방법
 기호 상수에서 이름 뒤에 괄호 ( ) 사이에 인자를 이용
 인자는 프로그래머가 지정하는 식별자를 이용하고, 이 인자를 치
환문자열에 사용
 여러 인자가 필요한 경우는 SUM(x,y)과 같이 콤마로 인자를 구
분
주의사항

괄호의 이용
 매크로를 정의하는 경우, 괄호의 이용은 매우 중요
 다음에서 괄호를 생략하면 심각한 문제가 발생
 다음 소스에서 변수 a에는 3의 제곱승인 9가 저장되지 못하고, 5
가 저장
#define SQUARE(x)
…
a = SQUARE(1+2);
(x * x)
인자 x는 1+2 자체가 되므
로 (1+2 * 1+2)로 치환되
어 우선 순위에 따라 결과
값이 5가 된다.



이러한 문제를 방지하기 위해서는 모든 인자와 외부에 괄호를 잘 이용
기호 상수에서 매크로 이름과 괄호 ( 사이에는 공백이 올 수 없다.
아래와 같이 공백이 들어가는 경우
 매크로 SQUARE를 문자열 (x) ((x) * (x))로 치환하는 의미
#define SQUARE (x)
((x) * (x))
키워드(예약어)

프로그램 언어마다 고유한 키워드(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
변수


변수
 프로그램에서 임시로 자료 값을 저장할 수 있는 저장 장소
 변수는 필요한 자료 값을 저장할 수 있는데, 변수를 사용하기 위해서
는 사용 전에 변수 선언을 반드시 선행
변수 선언
 선언이란 내부적으로는 사용할 변수의 저장 공간을 메모리의 적당한
위치에 확보하는 것
 변수 선언 예
// 변수선언 구조
자료유형 변수이름;
// 실제 예
int countKeywords;
변수 선언

메모리에서 공간을 확보
 프로그램에서 변수의 선
언은 메모리에서 적당한
공간을 확보의 의미
변수의 초기 값

변수의 초기 값
 변수(variables)는 선언하면서 그 초기(처음) 값을 저장
 변수는 초기값이 무엇이든 항상 마지막 값만을 저장
// 변수 count를 int로 선언하면서 값을 10으로 저장
int count = 10;
// 변수 count 값을 25로 수정하여 저장
count = 25;


같은 자료 유형의 변수는 여러 개를 한 문장으로 선언 가능
같은 자료 유형의 변수는 선언하면서 변수의 초기 값을 저장
// 변수 a, b를 int로 선언하면서 초기 값을 저장하지 않음
int a, b;
// 변수 c, d를 int로 선언하면서 초기 값으로 각각 10과 20을 저장
int c = 10, d = 20;
자료 유형의 종류와 크기

기본 자료형
 2가지로 분류
 정수형과 부동소수형
 3가지로 분류
 정수형, 문자형, 부동소수형
문자형
정수형
부동소수형
정수형
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
자료 유형


저장 값의 종류는 다양
 124와 같은 일반 정수에서부터 3.14와 같은 소수, ‘a’와 같은 문자 등
다양한 종류의 값을 저장
 다양한 자료 값의 종류가 프로그램 언어마다 고유하게 정해져 있는 것
이 일반적
자료 유형
 이 변수에 저장되는 값의 종류를 자료 유형(data types) 또는 간단히
자료형이라고도 함
 C 언어에는 자료형을 크게 기본 자료형(basic type)과 유도 자료형
(derived type)으로 구분
 유도 자료형에는 배열, 구조체, 공용체 등
 C 언어의 기본 자료형은 모두 12가지
 기본 자료형의 두 가지 부류는 정수형(integral type)과 부동소수
형(floating pointing type)
 정수형은 -3, 5, 100과 같은 정수 값을 저장하는 공간을 의미하
며, 부동소수형은 3.14, 5.111345와 같은 소수 형태의 수
변수 선언

선언
 저장 공간인 변수는 사용하기 전에 반드시 선언(declaration)을 먼저
하고 이용
 이것은 C 언어의 중요한 규칙으로 강력한 자료형 언어(Strong Type
Language)라 함
 Visual Basic은 변수의 선언 없이 이용가능
 선언도 하나의 문장으로 반드시 세미콜론으로 종료
// 자료유형12가지중의하나 변수이름;
int money;
int year, month, date;

메모리 공간의 확보
 변수 선언은 메모리에 자료 유형에 맞는 크기의 저장 공간을 확보하라
는 중요한 의미의 문장
 비쥬얼 C++를 이용하는 경우, 이 변수를 위한 저장 공간의 크기
는 4바이트, 즉 32비트 공간 확보
변수 선언 의미

유형, 값, 이름
 변수는 변수 선언된 이후에 중요한 세 가지 의미를 갖는데,
 자료 유형, 값, 이름
 변수 year는 이름이고, 자료유형은 int이며, 값은 아직 미정
int

year;
변수의 초기 값
 변수를 선언하면서 바로 값을 저장하려면, 다음과 같이 변수이름에 이
어서 대입연산자 =와 원하는 값을 기술
int
year = 12;
변수 선언 위치

선언 시 주의
 변수의 선언은 반드시 main()
수의 첫 줄에서부터 시작하며,
언문이 아닌 다른 문장이 먼저
오면 그 이후에는 선언문 이용
가능
…
함
선
나
불
int main(void)
{
변수 선언문;
…
일반 문장;
…
}
…

다음 구문은 컴파일 시간에 에러
int main(void)
{
int year;
year = 2005;
int month;
…
}
상수 선언


상수(constant number)
 변수 값으로 초기 값을 저장 한 후 수정할 수 없는 수
 프로그램에서 변수 선언 이후, 수정할 필요가 없는 수를 상수로 정의
하여 이용
선언
 변수를 상수(constant number)로 선언하기 위해서는 변수 선언 시
키워드 const를 자료유형 앞에 기술
const

double
phi = 3.14;
반드시 선언하면서 초기 값으로 값을 저장해야 하며, 다음은 에러
const double
phi = 3.14;
phi;
정수형 자료

정수형
 정수형은 큰 의미에서는 문자형을 포함한다고 보고, 좁은 의미에서는
문자형을 제외한 순수하게 정수를 저장하는 자료 유형이라고 볼 수 있
음
 정수형은 키워드 int를 기본으로 하며, int 자료유형에서 파생된 자료
유형 short (int)와 long (int)가 있음


각각 저장 크기가 다름
signed와 unsigned
 키워드 signed는 생략이 가능
 unsigned는 0과 양수만 표현
정수형 6가지

좁은 의미의 정수형은 모두 6가지
 정수를 저장하는 자료형의 종류는 short, int, long 세 가지이며, 여기
에 signed와 unsigned를 지정할 수 있으므로 모두 6가지
문자형
정수형
부동소수형
정수형
char
(signed) short
(signed) int
(signed) long
unsigned short
unsigned int
unsigned long
float
double
long double
(signed) int


자료형 signed int의 범위
 정수 자료형 signed
int의 크기가 32 비트
이면 음수부터 양수까
지 표현이 가능하므로
-231에서부터 231-1까
지 표현이 가능
MSB
 가장 왼쪽의 비트가 0
이면 양수 또는 0을 의
미하며, 가장 왼쪽의 비
트가 1이면 음수
 수의 부호를 의미하는
저장공간의 최고 비트
를 부호 비트(Signed
Bit), 또는 최상위 비트
(Most Significant Bit)
-231 <=
singed int
<=
231-1
unsigned int

0과 양수만 표현
 정수 자료형 unsigned int의 크기가 32 비트이면 0과 양수만 표현이
가능하므로 0에서부터 232-1까지 표현이 가능
0 <=

unsinged int
<=
232-1
정수 자료형 unsigned int에서는 최상위 비트(Most Significant Bit)
가 부호 비트로서의 역할을 상실
short과 long

short (int)
 정수 자료형 signed short의 크기가 16 비트이면 음수부터 양수까지
표현이 가능
 -215에서부터 215-1까지 표현이 가능
 마찬가지로 unsigned short의 범위는 다음
-215 <=
0

signed short int
<=
215-1
<= unsigned short int
<=
216-1
long (int)
 정수 자료형 signed long의 크기가 32 비트이면 음수부터 양수까지
표현이 가능
 -231에서부터 231-1까지 표현이 가능
 마찬가지로 unsigned long의 범위는 다음
-231 <=
signed long int
0
unsigned long int
<=
<=
<=
231-1
232-1
오버플로우

overflow
 정수 자료형에서 저장 할 수 있는 범위의 수보다 더 큰 수나 작은 수를
저장한다면 오버플로우(overflow)가 발생
 정수 자료형 signed int(크기가 32 비트)에서 가장 큰 수인 2311(2147483647)에 1을 더한 수를 signed int에 저장하면 오버플로
우가 발생
 2147483648를 저장할 수 없고, -2147483648이 됨

위에서 나온 결과 값인
 10000000 00000000 00000000 00000000은 signed int에
서 2147483648이 아니고 -2147483648 임
문자형

char
 문자 유형은 모두 1 바이트, 즉 8 비트로 구성되며, 다음과 같이 세 가
지 종류
char
signed char
unsigned char



문자형은 키워드 char로 표현하며, 키워드 char 앞에 signed와
unsigned가 올 수 있다. 그러나 short, int, long과는 다르게 signed
char가 항상 char와 같은 표기는 아니다.
컴파일러에 따라 char는 signed char, unsigned char
문자는 하나의 영문자를 구성
 영문자를 그대로 표현하기 위해서는 반드시 작은 따옴표인 인용부
호(quote) ‘
char c = ‘a’;
문자형의 표현

문자의 내부 값
 메모리에는 문자가 저장되는 것이 아니라 문자에 대응되는 정수 저장
char c = ‘a’;
문자 a의 아스키 코드 값이 01100001 = 97
문자형 자료형은 넓은 의미로 정수형 자료형
 이유는 문자형의 내부 표현이 정수형의 내부 표현과 같고, 정수의 저
장 공간으로 이용이 가능하기 때문
 문자형 자료의 저장 공간은 1 바이트, 즉 8 비트이고 키워드 signed,
unsigned에 따라 저장 자료의 범위가 결정
 문자형 변수는 내부적으로는 정수형이므로 산술연산이 가능
 문자 ‘A’의 다음 두 번째 문자인 ‘C’가 출력


char uppercase = ‘A’;
printf("대문자 C 출력 > %c\n", uppercase+2);
특수 문자 표

주로 이용하는 특수 문자 표
문자이름
영문 표현
정수값
표현
의미
경고
BEL (Bell)
7
\a
경고음이 울림
수평탭
HT (Horizontal
tab)
9
\t
수평으로 다음 탭만큼 이
동
개행문자
LF (Linefeed)
10
\n
다음 줄로 이동
폼피드
FF (Formfeed)
12
\f
새 페이지의 처음으로 이
동
캐리지 리턴
CR (Carriage
return)
13
\r
현재 줄의 처음으로 이동
큰따옴표
Double quote
34
\”
“ 문자
작은따옴표
single quote
39
\’
‘ 문자
역슬래쉬
Backslash
92
\\
\ 문자
부동 소수형

float, double, long double
 정수가 아닌 소수를 저장하는 변수의 자료형을 부동 소수형
 float, double, long double의 순으로 표현 범위가 크고, 세밀
float


<
double
<=
long double
float 변수는 4 바이트, 즉 32비트 크기로 저장공간을 할당하고,
double은 8바이트, 즉 64비트의 저장공간을 할당
float 의 저장공간 크기 : 32비트
 자료형 float의 표현 범위는 대략 10-38에서 1038이고, 소수점 이
하 6자리까지 표현이 가능
double 의 저장공간 크기
: 64비트
 자료형 double은 float보다 표현 범위가 크고, 정밀도도 정확하여
표현
 범위는 대략 10-308 에서 10308 이고, 소수점 이하 15자리까지 표
현
long double은 double보다 더 큰 저장공간을 할당하려는 의도에서
만들어졌으나 컴파일러마다 다르며, 특히 비쥬얼 C++에서는 long
double도 double 과 마찬가지로 64비트의 저장공간을 할당
12가지 자료형

기본 자료형
 기본 자료형은 모두 12가지로 비쥬얼 C++인 경우, 다음과 같이 정리
문장

문장
 컴퓨터에게 작업 명령을 내리는 기본 단위
 C 언어 문장의 마지막에는 반드시 세미콜 론(;)을 기술
int

year = 2004 ;
토큰
 문장을 이루는 의미 있는 단어나 기호를 토큰(token)
 토큰 중에서 키워드나 식별자, 연산자 등을 구별
 위 문장은 5개의 토큰으로 구분
토큰
int
year
=
2003
;
의미
정수 자료형을 의미하는 키워드
변수 이름인 식별자
대입연산자
정수 상수
문장의 종료를 의미
상수(literals)




상수
 수학이나 일상생활에서 이용하는 여러 자료 값이 프로그램 소스에서
도 그대로 이용될 수 있는데, 이러한 자료 값을 상수(literals)라 함
 100, 34.5와 같은 정수나 소수(실수)는 프로그램에서도 그대로 이
용이 가능
상수 종류
예
정수 상수
10, 2, 017, 0x17, 0X18
실수 상수
3.14, 25.3, 32.5E23, 17.1e-3
문자 상수
‘A’, ‘+’, ‘\n’
문자열 상수
“대한민국 2002”
진수의 표현
 정수 017은 십진수 17이 아니라 8진수 17을 의미
소수의 표현
 상수 32.5E23, 17.1e-3은 지수승을 표현하는 방식으로 각각
32.5*1023과 17.1*10-3을 의미
문자와 문자열
 작은 따옴표와 큰 따옴표로 표현
표준입력

함수 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 형을 저장
출력 함수

함수 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);
정수 필드 폭과 정렬

출력하려는 정수 값의 필드 폭
(width)을 지정하려면
 %d 사이에 폭을 나타내는 정
수를 기술
 마찬가지로 출력 값의 정렬
은 필드 폭 앞에 빼기기호 를 넣어서 좌측정렬로 지정
실수 필드 폭과 정렬


부동소수형을 출력하는 경우
 변환명세에서 필드 폭(width)
을 지정하려면 %f 사이에 폭
을 기술
 %10.5f
 전체 폭은 10, 그 중에서
5는 소수점 이하 자리수
의 폭을 의미
 %10f 라고 기술하면
 전체 폭은 10이고 소수점
이하 자리수의 폭은 기본
(default)인 6으로 지정
가변 폭 지정
 *를 이용
 전체 폭이 m, 소수 이하
는n
printf(“%*.*f”, m, n, 3.1);
출력에서의 탈출 기법

탈출 기법(escape sequences)
 탈출 기법을 이용한 문자를
함수 printf()에서 제어문자열
이나 표현식에서 이용이 가
능
 탈출 문자를 이용한 다음 구
문의 출력은?
 제어문자열
"\"%s\"\n" 을 구성하
는 각각의 의미는?
제어문자열 요소
의미
\”
글자 ‘대’ 앞에 “ 를 출력하기 위한 문자
%s
문자열 대한민국 을 출력하기 위한 변환명세
\”
글자 ‘국’ 뒤에 “ 를 출력하기 위한 문자
\n
새 줄로 다음 출력을 위한 이동
문자 입출력

문자 하나
 문자 하나를 입력하고 출력하기 위한 함수가 getchar()와 putchar()
 이 함수를 이용하려면 헤더 파일 stdio.h 파일을 첨가
 함수 getchar()를 이용하여 문자를 하나 입력 받으려면 인자가 없
는 getchar()를 이용
 입력 받은 문자를 저장하려면 자료형 char나 정수형으로 선언된
변수를 이용하여 저장
char c;
c = getchar();

문자의 출력은 함수 putchar()의 인자에 출력하려는 문자를 기술
하여 출력
putchar(c);
예제 소스(오버플로우)

Overflow.c
 정수 자료형
signed int에서 가
장 큰 수인 231-1과
가장 작은 수인 231을 각각 변수에
저장
 제곱 승을 구하기
위하여 함수 pow()
를 이용
 이 함수를 이용
하기 위해서는
#include 문으
로 math.h인
헤더 파일을 추
가
 변수 max, min 에
서 각각 1을 더한
수와 1을 뺀 수를
변수에 저장하여 출
력
예제 소스(문자형)

Char.c
 문자형 변수 alarm,
quote, uppercase
3개에 각각 ‘\a’,
‘\042’, ‘\101’ 세
값을 저장하여 출력
실습 문제

자신의 학번을 입력받아 출력하는 프로그
램 작성.
#include <stdio.h>
int main(void)
{
// 1. 학번을 받을 변수 선언 – 자료형 long 타입으로 선언
printf(“자신의 학번을 입력하세요 \n”);
// 2. 학번을 입력받는 함수 작성 – scanf();
// 3. 학번을 출력하는 함수 작성 – printf();
return 0;
}