뭔가 long데이터형이 깔끔하지 않아.



 

 32 bit

64 bit 

char

1 byte

short int 

int 

long  int 

float 

4

double 

8

8

pointer 

4

8


1. 분류 

정수형 : char, int 류

실수형 : float(float-point), double(double float)


2. char 

8bit 를 사용하여 표현가능한 범위에 있는 경우 사용한다. 꼭 문자만을 사용해야하는게 아니다.  다만 문자를 저장하는데 

가장 적합한 크기가 1byte 이므로 이를 좀더 쉽게 사용하도록 유도하기 위함. 

문자를 인코딩하기 위한 표준 규약인 ASCII 코드를 살펴보면 알 수 있다. (0~255 까지임)


3. short int

short int 가 원래 데이터형 이름이다. 

DOS시절 16bit운영체제이기때문에 int 라고 선언하면 short int 인 2byte 크기의 데이터형으로 인식되어, short 는 생략가능했음. 

하지만 현재 32bit운영체제에서는 short 를 생략할 수 없음. 


short라는 용어는 short int 라는 데이터형에서만 사용하기 때문에 편하게 int를 생략하고 short 라고 말해도 됨.  따라서 

short int        =    short

 타입

바이트수

최소/최대 값 

limits.h 상수 

접미사 

 비고

 (signed) short (int)

unsigned short (int)

 2

 -32768 - 32767

0 - 65535

 SHRT_MIN, SHRT_MAX

USHRT_MAX

 

 



4. int

 타입

바이트수

최소/최대 값 

limits.h 상수 

접미사 

 비고

 (signed) int

unsigned (int)

4

-2147483648 - 2147483647
0 - 4294967295

INT_MIN, INT_MAX

UINT_MAX

 

U

 

   


5. long int 

short 와는 달리 long는 32비트 이고 현재 32bit 운영체제 에서는 long 는 생략가능하다.  따라서 아래와같이  쓸수있다.

long int    =    int 


또한 long 이라는 키워드도 int 앞에만 붙여서 사용하기 때문에 long 나오면 int도 나올수밖에 없다. 따라서 int 를 생략 가능하다.  결과적으로 아래와같이쓸수있다.

long int     =     int    =    long

 타입

바이트수

최소/최대 값 

limits.h 상수 

접미사 

 비고

(signed) long (int)
unsigned long (int)

 4

-2147483648 - 2147483647
0 - 4294967295

LONG_MIN, LONG_MAX
ULONG_MAX

L

UL

 



 타입

바이

트수

최소/최대 값 

limits.h 상수 

접미사 

 비고

(signed) long long (int)
unsigned long long (int)

8

-9223372036854775808 - 9223372036854775807
0 - 18446744073709551615

LONG_LONG_MIN, LONG_LONG_MAX
ULONG_LONG_MAX

LL

ULL 

 



6. float 

4바이트 실수형. IEEE 754 규약에 따라 부호개념이 무조건 존재함. 그래서 signed나 unsigned 키워드를 사용할 필요가 없음. 


7. double 

8바이트 실수형 . IEEE 754 규약에 따라 부호 개념이 무조건 존재함. 그래서 signed나 unsigned 키워드를 사용할 필요가 없음. 



'프로그래밍 > C , C ++' 카테고리의 다른 글

확인해야할것1  (0) 2017.03.30
Windows/TCP 예제 프로그래밍 (server/client)  (0) 2013.08.02
#pragma 사용법 2  (0) 2013.04.03
#pragma 사용법 1  (0) 2013.04.03
[c_스터디]3. 형변환, 함수  (0) 2013.03.01
AND