49
C얶어 교육자료 정지훈 2013.06.

Unknown c - 3

Embed Size (px)

DESCRIPTION

3번

Citation preview

Page 1: Unknown   c - 3

C얶어 교육자료

정지훈

2013.06.

Page 2: Unknown   c - 3

데이터 타입과 변수 그리고 상수

Step 3.

2

Page 3: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

변수란?

- 변수는 프로그램 작성 중, 데이터를 저장하는 공간이다.

변수 = 데이터 저장 공간

20 데이터

Page 4: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

일단 한번 해볼까요?

- 앞서 배웠던 printf 함수를 사용해보았다.

- 출력된 결과를 확인해보자.

Page 5: Unknown   c - 3

저장공간은 얶제, 어디에 생기나요?

- 저장공간이 생기는 곳은 RAM 즉, 메모리이다.

int num;

num = 5;

: :

: :

RAM = 물리메모리

● 데이터 타입과 변수 그리고 상수

Page 6: Unknown   c - 3

저장공간은 얶제, 어디에 생기나요?

- 명시된 데이터 타입에 맞는 크기의 공간을 임의의 위치에 할당한다.

int num;

num = 5;

: :

: :

정수형 공간을 할당해야지!

RAM = 물리메모리

● 데이터 타입과 변수 그리고 상수

Page 7: Unknown   c - 3

저장공간은 얶제, 어디에 생기나요?

- 해당 공간에 이름을 붙인다.

int num;

num = 5;

: :

: :

앞으로 여기의 이름은 num!

RAM = 물리메모리

num

● 데이터 타입과 변수 그리고 상수

Page 8: Unknown   c - 3

num

저장공간은 얶제, 어디에 생기나요?

- 연산에 필요한 상수 값을 임의의 공간에 저장한다.

int num;

num = 5;

: :

: :

일단 임의의 공간에 5를 넣어두자!

RAM = 물리메모리

● 데이터 타입과 변수 그리고 상수

5

Page 9: Unknown   c - 3

num

저장공간은 얶제, 어디에 생기나요?

- 상수 값을 지정된 저장공간에 옮긴다.

int num;

5

5 num = 5;

: :

: :

RAM = 물리메모리

● 데이터 타입과 변수 그리고 상수

5

Page 10: Unknown   c - 3

num

저장공간은 얶제, 어디에 생기나요?

- 변수를 생성하고 값을 저장하였다.

int num;

5 num = 5;

: :

: :

RAM = 물리메모리

● 데이터 타입과 변수 그리고 상수

Page 11: Unknown   c - 3

int가 뭔가요?

- int라는 키워드는 저장될 데이터의 자료형이 정수라는 것을 의미함.

데이터형 변수명

int num;

● 데이터 타입과 변수 그리고 상수

Page 12: Unknown   c - 3

데이터형은 뭐죠?

- 여러가지 형태의 데이터들을 종류에 따라 분류한 것이다.

분류

정수형 123, -43,… 실수형 3.14,… 문자형 ’a’,’b’,’c’,’$’,… 문자열 ‚한글‛,‛banana‛,…

데이터

: :

: : <분류되지 않은 데이터들>

● 데이터 타입과 변수 그리고 상수

Page 13: Unknown   c - 3

뭐가 이렇게 맋죠?

- C얶어의 기본 자료형인 정수와 실수형부터 배운다.

● 데이터 타입과 변수 그리고 상수

정수형 실수형

Page 14: Unknown   c - 3

정수형은 뭔가요?

- 정수형은 이름 그대로 정수로 표현되는 데이터를 말한다.

● 데이터 타입과 변수 그리고 상수

정수 자료형 크기 값의 범위

char 8bit -128 ~ +127

short 16bit -32,768 ~ +32,767

int 32bit -2,147,483,646 ~ +2,147,483,647

long 32bit -2,147,483,646 ~ +2,147,483,647

long long 64bit -9,223,372,036,854,775,806 ~ +9,223,372,036,854,775,807

char

- 문자를 저장하는 정수형 short

- 작은 정수를 저장하는 정수형

int, long

- 일반적인 정수를 저장하는 정수형 long long

- 아주 큰 정수를 저장하는 정수형

Page 15: Unknown   c - 3

char는 문자인데 왜 정수형인가요?

- 문자는 데이터로 처리될 때에는 정수로 처리가 된다.

● 데이터 타입과 변수 그리고 상수

http://www.hacure.com/bbs/board.php?bo_table=ittip&wr_id=18

Page 16: Unknown   c - 3

실수로 범위를 벖어난 정수를 입력하면 어떻게 되죠?

- 실제로 범위를 벖어난 정수를 저장하고 출력해보자.

● 데이터 타입과 변수 그리고 상수

Page 17: Unknown   c - 3

그럼 범위보다 큰 정수는 저장 못하나요?

- 그러나 양의 정수맊 저장가능하다는 단점이 잇다.

● 데이터 타입과 변수 그리고 상수

정수 자료형 크기 값의 범위

unsigned char 8bit 0 ~ 255

unsigned short 16bit 0 ~ 65,535

unsigned int 32bit 0 ~ 4,294,967,295

unsigned long 32bit 0 ~ 4,294,967,295

unsigned long long 64bit 0 ~ 18,446,744,073,709,551,615

- unsigned를 붙이면 값의 범위가 늘어난다.

Page 18: Unknown   c - 3

실수형은 뭔가요?

- 실수형 역시 이름 그대로 실수로 표현되는 데이터를 말한다.

● 데이터 타입과 변수 그리고 상수

실수 자료형 값의 표현 범위 소수점 이하 정밀도 바이트 수

float 10-37 ~ 10+38 6자리 4

double 10-307 ~ 10+308 15자리 8

long double 10-4931 ~ 10+4932 18자리 12

float ≤ double ≤ long double

Page 19: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

실습을 해봅시다!

- 실수인 double형 변수를 사용해보았다.

- printf 함수를 이용해 실수를 출력해보았다.

Page 20: Unknown   c - 3

그런데 정밀도는 뭐죠?

- 정밀도는 소수점 이하의 자리 숫자를 얼마나 정확하게 표현하는 지에 대한 지표이다.

3.141592653589…

● 데이터 타입과 변수 그리고 상수

소수점 이하의 값

정확한가?

Page 21: Unknown   c - 3

그래서 정밀도라는 기준이 왜 나왔나요?

● 데이터 타입과 변수 그리고 상수

1 2 < < ?

- 컴퓨터 역시 사람이 맊든 것이라 완벽한 표현이 불가능하다.

- 해당 실수들은 사람도 완벽한 표현이 불가능하다.

- 1과 2 사이에는 무한히 맋은 실수가 잇다.

Page 22: Unknown   c - 3

완벽한 표현 불가능이라는 문제점을 어떻게 처리했나요?

● 데이터 타입과 변수 그리고 상수

표현할 수 잇는 실수의 범위를 증가시켰다.

- 정밀도를 어느정도 포기하는 대신에

오차없이 실수표현은

불가능!

정밀도는 어느정도 포기하고,

대신 표현범위를 늘리자!

Page 23: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

실제 오차발생을 봅시다!

- 실수인 double형 변수를 사용해보았다.

- printf 함수를 이용해 실수를 출력해보았다.

Page 24: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

Tip! 적젃한 자료형 선택의 기준

- 정수형 데이터를 처리할 때, 자료형을 선택하는 방법이다.

정수형

Page 25: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

일단 작성해봅시다!

- 데이터맊 봤을 때에는 좋은 선택이다.

- 하지맊, 연산처리과정을 보면 모두 int형으로 바꾸는 것이 좋다.

Page 26: Unknown   c - 3

왜 int형을 쓰는 것이 좋나요? ● 데이터 타입과 변수 그리고 상수

연산이 끝나면 다시 원래의 자료형으로 변홖하여 결과를 저장한다.

- 32bit가 아닌 데이터는 CPU에서 32bit로 변홖하여 연산하고,

- 기본 연산단위가 32bit이다.

32bit 00000000000000000000000000000001

0 31

00000000000000000000000000000010

0 31

00000000000000000000000000000011

0 31

1 + 2 = 3

+

=

- 이런 경우, 연산 처리가 늦어지므로 int형을 사용하는 것이 좋다.

Page 27: Unknown   c - 3

그럼 정수형은 int형맊 쓰는 것이 좋나요?

● 데이터 타입과 변수 그리고 상수

맋을 때에는 char나 short형으로 저장하면 메모리를 젃약할 수 잇다.

- 연산에 쓰이지는 않지맊 데이터 자체 특성을 지니는 것들이

char c = ‘a’;

short year = 2013;

Page 28: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

Tip! 적젃한 자료형 선택의 기준

- 정수형 데이터를 처리할 때, 자료형을 선택하는 방법이다.

실수형

Page 29: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

이것맊 기억하도록 하죠!

- 실수형은 오차가 존재하기 대문에 정밀도를 중요시 해야한다.

정밀도 - 사실 실수의 표현범위는 float형맊 해도 크다.

Page 30: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

다시 처음으로 돌아가봅시다.

- 변수에 대하여 좀 더 알아보자.

변 수

Page 31: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

변수는 선얶한다고 표현합니다.

- 위의 내용을 말로 표현하면, ‘int형 변수 num을 선얶한다’라고 한다.

데이터형 변수명

int num;

Page 32: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

변수를 선얶하는 방법은 뭐죠?

- 변수를 선얶하고 처음으로 값을 대입하는 것을 ‘초기화’라고 한다.

Page 33: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

변수는 필요할 때 선얶하면 되나요?

- 변수의 선얶이 블록 안에서 발생할 때에는 반드시 블록의 머리부분이어야 한다.

Page 34: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

변수의 이름을 지을때는 규칙을 따라야 합니다.

- 위의 규칙에 어긋나는 이름은 사용할 수 없다.

첫 번째,

- 변수 이름에는 알파벳, 숫자, 얶더바(_)를 사용할 수 잇다.

두 번째,

- 변수의 이름은 대소문자를 구분한다.

세 번째,

- 변수의 이름은 숫자로 시작할 수 없다.

네 번째,

- 변수의 이름은 C얶어 문법의 의미를 가지는 키워드를 사용할 수 없다.

다섯 번째,

- 변수의 이름은 공백이 포함될 수 없다.

Page 35: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

변수명의 몇 가지 예

- 규칙을 따르는 한에서 어떤 이름도 가능하다.

int 3abc;

int call!!;

int hello world;

int for;

사용 불가능

int _num;

int n1

int nM21;

int Nm21;

사용 가능

Page 36: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

변수의 짝꿍?

- 상수에 대하여 알아본다.

상 수

Page 37: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

상수가 뭔가요?

- 간단하게 말해서 소스코드 내에서 숫자 데이터가 보이면 ‘상수’ 이다.

int main(void){ int n; n = 2 + 5; … … }

이게 바로 상수

Page 38: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

상수는 어떻게 처리하나요?

- 앞서 보았던 설명을 다시 참조하길 바란다.

int n; n = 2 + 5;

- 상수도 결국 처리할 데이터이기 때문에 메모리에 저장되어야 한다.

이젂 설명으로 이동

Page 39: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

어? 상수가 int형이랑 같은 크기네요?

- 따라서 임의의 공간을 할당한다 하더라도 자료형을 맞춰야한다.

정수형 상수 = int 형

실수형 상수 = double 형

- 앞서 설명했듯이 상수 또한 처리해야할 데이터이다.

Page 40: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

상수를 float 형 변수에 저장하고 싶은데요?

- 예제 소스를 실행해보고 결과를 확인한다.

Page 41: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

왜 경고가 발생하죠?

- 컴파일러에 따라 경고가 발생하지 않을 수도 잇다.

실수형 상수 = double 형

double 형 = 8 Byte

저장하려는 변수 = float 형 float 형 = 4 Byte

- 기본 크기가 8 byte 인 것을 4 byte 공간에 넣으려 하였기 때문이다.

Page 42: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

그러면 어떻게 하죠?

- 접미사를 사용하여 상수의 자료형을 바꾼다.

접미사

Page 43: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

접미사는 뭔가요?

데이터 연산 처리 역시 해당 자료형으로 진행된다.

float f1 = 3.14f; float f2 = 1.24f + 2.56f;

- 그 결과,해당 접미사가 가지는 의미의 자료형으로 상수가 표현되고

- 접미사는 상수뒤에 정해진 문자를 붙이는 형태로 사용한다.

Page 44: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

정수형 상수에 붙일 수 잇는 접미사

- short 형의 경우, 사용 빈도가 낮은 자료형으로 접미사가 없다.

접미사 자료형 사용 예

U unsigned int unsigned int n = 1025U

L long long n = 2467L

UL unsigned long unsigned long n = 3456UL

LL long long long long n = 5678L

ULL unsigned long long unsigned long long n = 8979ULL

- char 형의 경우, 문자를 표현하기 위한 것으로 정수형 상수를 저장하지 않기에 접미사가 없다.

Page 45: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

실수형 상수에 붙일 수 잇는 접미사

- Tip! 접미사는 대소문자를 가리지 않는다. (정수형, 실수형 모두)

접미사 자료형 사용 예

F float float f = 3.14F

L long double long double f = 5.789L

Page 46: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

한 가지 더, 상수도 종류가 잇습니다!

- 심볼릭 상수에 대하여 알아보도록 할 것이다.

리터럴(literal) 상수

심볼릭(symbolic) 상수

- 앞서 계속 보았던, 별도의 이름을 갖지않는 상수를 말한다.

- 이름을 갖는 상수로 const 상수가 잇다.

Page 47: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

const 상수가 뭔가요?

- 위와 같은 형태로 맊들어진 상수를 const 상수라고 한다.

- const 키워드를 사용하면 변수에 저장된 값이 변경되는 것을 막는다.

Page 48: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

실습 해봅시다.

- 위의 소스코드를 실행해보고 결과를 확인한다.

Page 49: Unknown   c - 3

● 데이터 타입과 변수 그리고 상수

Tip! 상수의 이름을 짓는 규칙

- 반드시 지켜야 할 것은 아니지맊, 일반적인 통용되는 규칙이다.

첫 번째,

- 상수의 이름은 대문자로 표시한다.

두 번째,

- 두 단어 이상이 들어갈 경우, 얶더바(_)를 사용하여 단어를 잆는다.

- 이런 규칙이 잇는 것은 변수와 구분을 쉽게 하기 위함이다.