(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
admin