본문 바로가기
정보처리이론

1-1. 데이터타입과 변수

by 공부합시다홍아 2020. 10. 17.

1. 데이터 타입(Data Type)1. 데이터타입(Data Type) 

변수(Variable)에 저장될 데이터의 형식을 나타내는 것으로 변수에 값을 저장하기 전에 문자형, 정수형, 실수형 등 어떤 형식의 값을 저장할 지 데이터 타입을 지정하여 변수를 선언해야 한다.

※ 데이터타입은 운영체제(OS)에 따라 기억 범위와 크기가 조금씩 다르다.

유형 기능
정수 타입(Integer Type) 정수, 즉 소수점이 없는 숫자 1, -1, 10, -100
부동 소수점 타입(Floating Poin Type) 소수점 이하가 있는 실수를 저장 0.123x10, -1.6x2.31
문자 타입(Character Type) 한 문자 저장시 사용
작은 따음표('')안에 사용
'A', 'a', '1', '*'
문자열 타입(Character String Type) 문자열을 저장 시 사용
큰 따옴표("")안에 표시
"Hello", "'1+2=3"
불린 타입(Boolean Type) 조건의 참(True), 거짓(False) 여부 판단 true or false
배열 타입(Array Type) 같은 타입의 데이터 집합을 만들어 저장 {1,2,3,4,5}

 

C/C++의 데이터 타입 크기 및 기억 범위 

종류 데이터 타입 크기 기억 범위
문자 char 1Byte -128~127
부호없는 문자형 unsigned char 1Byte 0~255
정수 short 2Byte -32,768~32,767
int  4Byte -2,147,483,648 ~
2,147,438,647
long 4Byte -2,147,483,648 ~
2,147,438,647
long long 8Byte -9,223,372,036,854,775,808~
9,223,372,036,854,775,807
부호없는 정수형 unsigned short 2Byte 0~65,535
unsigned int 4Byte 0~4,294,967,295
unsigned long 4Byte 0~4,294,967,295
실수 float 4Byte 1.2x10^-38~3.4x10^38
double 8Byte 2.2x10^-308~1.8x10^308
long double 8Byte 2.2x10^-308~1.8x10^308

 

JAVA의 데이터 타입의 크기 및 기억 범위

종류 데이터타입 크기 기억범위
문자 char 2Byte 0~65,535
정수 byte 1Byte -128~127
short 2Byte -32,768~32,767
int 4Byte -2,147,483,648~
2,147,438,647
long 8Byte -9,223,372,036,854,775,808~
9,223,372,036,854,775,807
실수 float 4Byte 1.4x10^-45 ~ 3.4x10^38
double 8Byte 4.9x10-324~1.8x10^308
논리 boolean 1Byte true 또는 false

 

Python의 데이터 타입 크기 및 기억 범위

종류 데이터 타입 크기 기억 범위
문자 str 무제한 무제한
정수 int 무제한 무제한
실수 float 8Byte 4.9x10^-324~1.8x10^308
complex 16Byte 4.9x10^-324~1.8x10^308

* complex 는 복소수를 의미, 복소수는 실수와 허수의 합으로 이루어진 숫자 표현

 

2. 변수(Variable)
컴퓨터가 명령을 처리하는 도중 발생하는 값을 저장하기 위한 공간으로, 변할 수 있는 값을 의미
* 변수는 저장하는 값에 따라 정수형, 실수형, 문자형, 포인터형 등으로 구분합니다.

변수명 작성 규칙
- 영문자, 숫자, _ 를 사용할 수 있다.
- 첫 글자는 영문자나 _로 시작해야 하며, 숫자는 올 수 없다.
- 글자 수에 제한이 없다.
- 공백이나 *, +, -, / 등의 특수문자를 사용할 수 없다.
- 대/소문자를 구분한다.
- 예약어를 변수명으로 사용할 수 없다.
- 변수 선언 시 문장 끝에 반드시 세미콜론(;)을 붙여야 한다.



예약어 
정해진 기능을 수행하도록 이미 용도가 정해져 있는 단어로, 변수 이름이나 다른 목적으로 사용 할 수 없습니다.

구분 예약어
제어문 반복 do, for, while
선택 case, default, else, if switch
분기 break, continue, goto, return
자료형 char, double, enum, float, int, long, short, signed, struct, typedef, union, unsigned, void
기억 클래스 auto, extern, register, static
기타 const, sizeof, volatile

 

기억클래스
변수 선언 시 메모리 내에 변수의 값을 저장하기 위한 기억영역이 할당되는데, 할당되는 기억영역에 따라 사용 범위에 제한이 있다.
이러한 기억영역을 결정하는 작업을 기억 클래스(Storage Class)라고 한다.

종류 기억영역 예약어 생존기간 사용 범위
자동 변수 메모리(스택) auto 일시적 지역적
레지스터 변수 레지스터 register
정적 변수(내부) 메모리(데이터) static 영구적
정적 변수(외부) 전역적
외부 변수 extern

 

1. 자동변수(Automatic Variable)
함수나 코드의 범위를 한정하는 블록 내에서 선언되는 변수
- 함수나 블록이 실행되는 동안에만 존재, 이를 벗어나면 자동으로 소멸
- 초기화하지 않으면 쓰레기값(Garbage Value)이 저장

2. 외부변수(External Variable)
현재 파일이나 다른 파일에서 선언된 변수나 함수를 참조(reference)하기 위한 변수
- 외부변수는 함수 밖에서 선언한다.
- 함수가 종료된 뒤에도 값이 소멸되지 않는다.
- 초기화하지 않으면 자동으로 0으로 초기화된다.
- 다른 파일에서 선언된 변수를 참조할 경우 초기화 할 수 없다.

3. 정적변수(Static Variable)
함수나 블록 내에서 선언하는 내부 정적 변수와 함수 외부에서 선언하는 외부 정적 변수가 있다.
- 내부정적변수는 선언한 함수나 블록 내에서만 사용할 수 있다.
- 외부정적변수는 모든 함수에서 사용할 수 있다.
- 두 변수 모두 함수나 블록이 종료된 뒤에도 값이 소멸되지 않는다.
- 초기화는 변수 선언 시 한 번만 할 수 있으며, 초기화를 생략하면 자동으로 0으로 초기화된다.

4. 레지스터변수(Register Variable)
레지스터 변수는 메모리가 아닌 CPU 내부의 레지스터에 기억영역을 할당받는 변수이다.
- 자주 사용되는 변수를 레지스터에 저장하여 처리속도를 높이기 위해 사용한다.
- 함수나 블록이 실행되는 동안에만 존재하며 이를 벗어나면 자동으로 소멸
- 레지스터의 사용 갸수는 한정되어 있어 데이터를 저장할 레지스터가 없는 경우 자동 변수로 취급되어 메모리에 할당된다.
- CPU에 저장되어 메모리 주소를 가질 수 없기 떄문에 변수의 주소를 구하는 주소 연산자(&)를 사용할 수 없다.

 

 

728x90

'정보처리이론' 카테고리의 다른 글

1-6. Python 의 기초와 라이브러리  (0) 2020.10.17
1-5. 포인터와 사용자정의함수  (0) 2020.10.17
1-4. 배열과 문자열  (0) 2020.10.17
1-3. 제어문과 반복문  (0) 2020.10.17
1-2. 데이터입출력과 연산자  (0) 2020.10.17