• 검색 결과가 없습니다.

3. 자료와변수자료와변수3.1 자료형자료형

N/A
N/A
Protected

Academic year: 2022

Share "3. 자료와변수자료와변수3.1 자료형자료형"

Copied!
33
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

3. 자료와 변수

(2)

3.1 자료형

(3)

자료형

컴퓨터는 숫자(= 데이터)를 다룬다.

컴퓨터가 다룰 수 있는 숫자의 유형이 있다.

강C프로그래밍 3

C 언어에서의 자료형 크기 (byte)

정수형(문자형)

char 1

정수형

short 2

int 4

long 4

long long 8

실수형 (부동소수형)

float 4

double 8

long double 8 / 16

(4)

정수형

정수형이란

– 가장 많이 사용되는 자료형

정수형의 종류

자료형 크기(byte) 범위

char 1 -128 ~ 127

short 2 -32,768 ~ 32,767

int 4 -2,147,483,648 ~ 2,147,483,647 long 4 -2,147,483,648 ~ 2,147,483,647 long long 8 약 -922경 ~ 922경 (이하 자리 생략)

(5)

정수형

자료형의 선택

– 자료의 범위를 수용할 수 있어야 한다.

– 가능하면 작은 크기의 자료형이 좋다.(메모리 사용량, 계산 속도)

int 형

– 과거의 int 형은 16비트였으나, 현재는 32비트 – 미래에 64비트 이상이 될 수도 있음.

char 형

– 정수형이며, 문자를 저장하는 목적으로 사용할 수 있기에 문자형 으로 볼 수도 있다.

강C프로그래밍 5

(6)

실수형

실수

– 소수점 이하가 존재

– 부동소수형 (floating point)

– 정수에 비해 훨씬 큰 숫자, 또는 훨씬 미세한 숫자

자료형 크기(byte) 유효자리 범위

float 4 7 ±10-38 ~ 1038

double 8 15 ±10-308 ~ 10308 long double 8 15 ±10-308 ~ 10308

Visual Studio 에서만 long double 이 8바이트이고, 대부분 12/16 바이트이다.

(7)

실수형

강C프로그래밍 7

0

- 1.7 * 10-307 1.7 * 10-307

- 1.7 * 10308 1.7 * 10308

+∞

-∞

0

- 3.4 * 10-37 3.4 * 10-37

- 3.4 * 1038 3.4 * 1038

+∞

-∞

float형

double형

(8)

실수형

단점

– 유효자리가 있다. (생각보다 짧다) – 처리 속도가 느리다.

– 오차의 발생 가능성이 많다.

실수의 단점이 치명적인 분야라면

– 해결책을 개발자가 찾아야 한다.

(9)

문자형

컴퓨터는 숫자만 다룬다.

– 일정 범위의 숫자에 문자를 할당하여 문자를 처리할 수 있도록 한다.

– char 형은 문자를 저장하기에 적합한 크기의 자료형이다. (int 는?)

ASCII Code

– 0~127까지의 숫자에 문자를 대응시켜 문자 저장용으로 쓴다.

– ASCII Code는 숫자를 문자처럼 해석하는 하나의 방법이다.

대표적인 문자의 ASCII Code

– 0~9 48 ~ 57 – 대문자 A, 소문자 a 65, 97 – 공백문자, 줄바꿈 문자 32, 10

강C프로그래밍 9

(10)

문자형

ASCII Code table

(11)

unsigned 형

정수형 자료형에 unsigned를 추가하여 범위를 두 배로 사 용

음수를 넣어서는 안 되는 경우 보호장치로 사용 가능

강C프로그래밍 11

자료형 범위

unsigned char 0 ~ 255

unsigned short 0 ~ 65,535 unsigned int 0 ~ 4,294,967,295 unsigned long 0 ~ 4,294,967,295 unsigned long long 0 ~ 1800경

기본 제공되지 않는 자료형은 개발자가 만들어서 사용해야 한다.

(12)

C언어 자료형의 이해

무조건 큰 범위의 자료형을 선택한다면?

– 모든 정수는 long long ? – 모든 실수는 long double ?

메모리는 소중하다.

– 정수(int) 1개는 4 바이트를 차지하지만, – 정수(int) 10억 개는 4GB를 차지한다.

짧은 단위일수록 처리 속도가 빠르다.

– char 형 덧셈이 long long형 덧셈보다 훨씬 빠르다.

– 정수형 연산이 실수형 연산보다 훨씬 빠르다.

실수를 정수로 변환하여 연산할 수도 있다.

(13)

3.2 변수

(14)

변수

프로그램에서 데이터를 저장/사용하기 위한 공간 (주 메모 리)

변수는 이름을 붙여서 사용한다.

변수에는 언제든 새로운 값을 저장할 수 있다.

변수에 값이 저장되면 언제든 그 값을 가져올 수 있다.

변수는 반드시 자료형을 가져야 한다.

변수는 사용하기 전에 반드시 선언되어야 한다.

– 자료형, 변수 이름

(15)

변수의 선언

어떤 자료형을 가진 어떤 이름의 변수를 필요한 만큼 선언 선언의 예

– int number;

– int value, score, total;

선언의 위치

– 변수를 사용하기 전

– 현재는 ‘int main ( ) {‘의 다음 줄에 넣는다.

강C프로그래밍 15

자료형 변수명;

자료형 변수명1, 변수명2,…;

number value score

주 메모리

(16)

변수에 값 넣기

변수에 값을 넣을 때 = 를 이용한다.

– 오른쪽에 있는 값을 왼쪽의 변수에 넣는다.

score = 90;

변수명 = 값 ;

90

주 메모리

number value score

(17)

변수의 이름

변수의 이름에 대한 규칙

– 문자(알파벳), 숫자, _ (underscore, underbar) – 변수 이름의 첫 글자는 무조건 문자 또는 _

– 변수 이름에 대소문자를 구별한다.

한글 변수명도 사용 가능

– C99에서 지원 (어느 나라 언어든 가능)

– 기존 개발자들 사이에서 익숙하지 않아 가급적 쓰지 않기를 권장

변수 이름의 예

– 적절한 예 (number, _number7, My_address)

– 적절하지 않은 예 (7even, num@#, score-score)

강C프로그래밍 17

(18)

변수의 이름

좋은 변수 이름

– 이름만으로도 무엇을 저장하는 변수인지 짐작할 수 있어야 한다.

– 변수의 자료형을 알 수 있으면 더 좋다.

• 개발도구가 변수의 자료형을 알려준다.

– 두 개 이상의 단어를 사용해도 좋다.

• totalNum, myAddress 등

좋지 않은 변수 이름

– a, b, c, a1, a2, aaaa, bbbb, kkk

(19)

변수의 이름

둘 이상의 단어가 결합된 변수의 작명

– 단어의 시작 문자를 대문자로 : AverageScore, TotalScore – 단어 사이에 _를 붙인다 : average_score, total_score

변수의 자료명

– iTotalScore : 정수형 변수임을 변수명에서 바로 알 수 있다.

– fAverageScore : 실수형 변수

사용할 수 없는 변수명 (keyword, 또는 reserved word)

– C 언어에서 별도의 목적으로 사용하도록 예약된 단어들

• auto, break, case, char, const, continue, default, do, double

• else, enum, extern, float, for, goto, if, return, short, sighed,

• sizeof, static, struct, switch, typedef, union, unsigned, void, while

강C프로그래밍 19

(20)

변수 초기화

변수 선언과 동시에 값을 넣어준다.

여러 변수의 선언과 초기화 예

– int number = 20, value = 30, score = 50;

int value;

value = 10;

int value = 10;

변수를 선언하고 초기화하지 않으면 쓰레기값이 들어있다.

모든 변수를 초기화해야 하는 것은 아니다.

(21)

변수의 초기화

다음은 정상적인 경우이다.

다음은 경고 또는 에러가 나온다.

– name 변수가 초기화되지 않아 쓰레기값이 있는데 그 쓰레기를 value에 넣으려 하고 있다.

강C프로그래밍 21

int value, name ; // value 변수는 초기화하지 않아도 된 다.

// 쓰레기값이 들어있지만, name = 50;

value = name; // value 변수의 쓰레기값을 쓰기 전에 // 다른 값으로 채우기 때문이다.

int value, name;

value = name;

(22)

sizeof 연산자

자료형의 크기를 알려주는 연산자

시스템마다 자료형의 크기가 다를 수 있다. 이 때 sizeof 연산자로 확인하는 것이 좋다.

int score;

score = 99;

printf( “%d\n”, sizeof (int)); // int 형의 크기를 출력

printf( “%d\n”, sizeof score); // score 변수의 크기를 출력

(23)

3.3 C 프로그램에서의 숫자

(24)

상수

값을 나타내는 자료 예

– 문자형 상수 ‘A’

– 정수형 상수 10, 384 – 실수형 상수 5.321

score = 10;

상수

(25)

이름 상수 (named constant)

변수처럼 식별자에 값을 부여한다.

– 값을 바꿀 수 없고, 프로그램 실행 내내 지정한 값 만을 가질 수 있다.

– 사용법

이름 상수를 쓰는 이유

– 프로그램의 가독성 향상

– 실수로 값을 변경하는 것을 방지

바람직한 상수명

– 대문자로 사용한다. : 변수와 달리 상수라는 것을 표시

강C프로그래밍 25

const

int MAX_SCORE = 100 ;

score = MAX_SCORE;

(26)

진수 표기법

C 프로그램에서 사용 가능한 진수

– 8, 10, 16진수

– 2진수 상수는 프로그램에서 직접 사용하지 않는다.

2, 8, 16진수의 관계

– 2진수 3자리를 묶으면 8진수 – 2진수 4자리를 묶으면 16진수

0100110010100110 4 C A 6

2진수 16진수

110010100110 6 2 4 6

2진수 8진수

(27)

진수 표기법

C 프로그램에서 진수의 표현

– 8진수 : 숫자 앞에 0을 붙인다.

– 16진수 : 숫자 앞에 0x를 붙인다.

– 사용 예:

value = 010; // 8진수 10, 즉, 8을 value에 넣는다.

Score = 0x10; // 16진수 10, 즉 16을 score에 넣는다.

강C프로그래밍 27

프로그램에서 2진수를 이용하여 입력하는 방법은 없다.

8진수 또는 16진수로 변환하여 입력해야 한다.

(28)

지수형 자료의 입력

수 입력의 한계

– 10^100 을 입력하기 위해 다음과 같이 할 수 없다. (에러) double fvalue =

10000000000000000000000000000000000000000…………

지수 형태의 입력이 가능하다.

– fvalue = 1.0e100;

(29)

오버플로/언더플로

강C프로그래밍 29

표현 범위를 벗어날 경우

– char 형에서 -128보다 작거나(언더플로) 127보다 클 때(오버플 로)

오버플로/언더플로

– 따로 에러로 간주하지 않으나, 예상치 못한 값이 들어있다.

– 발생하지 않도록 하는 것이 바람직하다.

C 언어에서의 자료형 크기 (byte) 표현 범위

정수형

char 1 -128~127

short 2 -32768 - 32767

int 4 -2,147,483,648 ~ 2,147,483,647 long 4 -2,147,483,648 ~ 2,147,483,647 long long 8 약 -922경 ~ 922경 (이하 자리 생략)

(30)

수와 접미사

실수형 상수도 float 형과 double 형으로 구분된다.

double 상수를 float형 변수에 넣으려 하면 자료 손실 가 능성으로 경고가 나온다

상수를 특정한 자료형으로 정의할 때 접미사를 사용한다.

– a = 0.1F; // 0.1을 float 형으로 간주하라.

접미사의 종류

– U, L, UL, LL, ULL(이상 정수형 접미사), F, L (이상 실수형

float a, b;

a = 0.1; // 경고가 나온다 b = 0.5; // 정상이다.

(31)

3.4 컴퓨터에서 수를 표현하는 방

(32)

정수의 표현

오버플로/언더플로의 결과를 이 표에서 찾아보자.

2의 보수로 표현하는 음의 정수 양의 정수

-2,147,483,648 -2,147,483,647

… -3 -2 -1 0

1000….….0000 1000……..0001

1111……..1101 1111……..1110 1111……..1111 0000……..0000

2,147,483,647 2,147,483,646

… 3 2 1 0

0111..……1111 0111……..1110

0000……..0011 0000……..0010 0000……..0001 0000……..0000

(33)

실수의 표현

± 𝟏. 𝒇𝒇𝒇𝒇𝒇𝒇𝒇𝒇𝒇𝒇𝒇𝒇𝒇𝒇𝒇𝒇𝒇𝒇𝒇𝒇𝒇𝒇𝒇 ∗ 𝟐 𝒆𝒆𝒆𝒆𝒆𝒆𝒆𝒆−𝟏𝟐𝟕

long double형은 시스템마다 구성이 다르다.

강C프로그래밍 33

0 e e e e e e e e f f f f f f f f f f f f f f f f f f f f f f f

1 bit 8 bit 23 bit

지수 가수

참조

관련 문서

*단어 사이의 공통성과

약국은 당초 수집 목적과 합리적으로 관련된 범위에서 정보주체에게 불이익이 발생하는지 여부, 암호화 등 안전성 확보에 필요한 조치를 하였는지 여부 등을

[r]

[r]

(Taekwondo, Weight Lifting Players) (90 min × 6 days/week) Warming

15) 세광음악출판사

[r]

DB(확정급여)형 퇴직연금제도 또는 DC(확정기여)형 퇴직연금제도를 설정한 사용자는 매년 1회 이상 가입자에게 해당 사업의 퇴직연금제도 운영상황 등에