(3) 변수
Programming/C 2015. 9. 17. 15:03변수는 메모리의 위치를 기억한다.
그러나 실제로 컴파일러가 변수를 참조할 때는 메모리 번지를 참조하는 것이 아니라
번지에 기억된 값을 참조한다.
변수의 실체는 번지가 아니라 그 번지에 기록된 값이다.
변수는 저장된 메모리 위치와 함께 길이와 형태에 대한 정보도 가진다.
이런 변수의 특성을 타입이라고 한다.
타입이란 컴파일러가 변수를 읽고 쓰는 방법에 대한 정보이다.
구분 |
타입 |
설명 |
기본형 |
정수형 |
정수 |
문자형 |
문자 | |
실수형 |
실수 | |
열거형 |
가능한 값들에 대한 나열형 | |
void형 |
타입이 정해지지 않은 자료형 |
구분 |
타입 |
설명 |
유도형 |
배열 |
같은 타입의 자료 집합 |
구조체 |
다른 타입의 자료 집합 | |
공용체 |
메모리를 공유하는 자료 집합 | |
포인터 |
대상체의 번지를 가리키는 타입 | |
함수형 |
함수의 번지를 가리키는 타입 |
기본형
- 하나의 단일 값을 기억하는 단순한 타입이다.
- 전부 수치를 저장한다는 점에서 공통적이다.
유도형
- 기본형으로부터 만들어지는 타입
정수형(Integer)
- 부호는 있지만 소수점 이하를 표현하지 못하는 수
- 컴퓨터의 메모리는 유한하기 때문에 수학적 정의와 달리 무한대의 범위를 지원하지 않는다.
타입 |
크기(바이트) |
부호 |
범위 |
int |
4 |
있음 |
-2147483648~2147483647 |
short int |
2 |
있음 |
-32768 ~ 32767 |
long int |
4 |
있음 |
-2147483648~2147483647 |
unsigned int |
4 |
없음 |
0 ~ 4294967295 |
unsigned short int |
2 |
없음 |
0 ~ 65535 |
1. 부호에 대한 수식어 생략되면 signed가 적용되어 부호가 있는 것으로 선언된다.
singed는 보통 붙이지 않음
2. int 앞에 수식어가 있을 경우에 int는 생략할 수 있다.
정수형의 길이
- 수학의 정수는 음양으로 무한대의 값을 표현할 수 있지만, 유한한 메모리를 가진 컴퓨터는
이런 무한한 값을 표현하지 못하며, 자신에게 할당된 메모리 양만큼의 값만 기억할 수 있다.
그래서 가끔 연산 결과가 용량을 넘어서는 경우가 발생하기도 한다.
정수형 타입의 도표를 보면 int와 long은 크기나 부호 여부가 동일하며, 표현할 수 있는 수의 범위도 완전히 동일하다.
하지만 이 둘은 엄밀하게 말하면 다른 타입이다. 달라질 수 있는 타입이라고 할 수 있다.
C언어의 타입 정의에 int형은 CPU의 레지스터와 동일한 크기를 가지는 타입으로 정의되어있다.
레지스터란 CPU내의 임시 기억 장소이며, 레지스터의 크기에 따라서 CPU의 비트 수를 정의한다. 즉 레지스터가 16비트이면 16비트 컴퓨터가 되는 것이다.
따라서 int형은 CPU가 가장 효율적으로 다룰 수 있는 정수형으로 정의되어 있다.
int형의 실제 크기는 플랫폼에 따라서 달라진다.
하지만 long형은 그 크기가 4바이트로 고정되어있어서 어느 플랫폼에서든 4바이트이다.
정수형 상수
'Programming > C' 카테고리의 다른 글
(4) 연산자 (0) | 2015.09.22 |
---|---|
(2) 프로그램 구성 요소 (0) | 2015.09.15 |
(1) 컴파일러 (0) | 2015.09.15 |
포인터(기초) (0) | 2015.06.03 |
memset() (0) | 2015.05.16 |