728x90


변수

variable
  • 메모리를 담는 그릇 : 공간
  • 메모리 공간에 값을 할당 후 사용
  • 공간의 크기는 타입 별로 상이.

 

타입

; 변수에 저장되는 데이터의 종류.

1. Primitve Type

기본형
  • 미리 정해진 메모리의 크기에 변수 값을 저장.
  • 흔히 알고 있는 int, char, .. 등등
타입 키워드 크기 (bit 단위) 범위
논리형 boolean 1 true, false
문자형 char 16 \u0000 ~ 
\uffff (0 ~ 2^15-1)
정수형 byte 8 -128 ~ 127
short 16 -32768 ~ 32767
int  32 -2147483648 ~ 2147483647
long 64 -9223372036854775808 ~ 
9223372036854775807
실수형 float 32 0x0.000002P-126f ~ 
0x1.fffffeP+127f
double 64 0x0.0000000000001P-1022 ~ 
0x1.fffffffffffffP+1023

 

2. Reference Type

참조형
  • 데이터를 heap에 저장하고 그 공간의 주소를 저장.
  • Class, Interface, Array, String .. 
728x90
728x90


 

타입 특징 값의 범위
Bool 논리 자료형 ( 참 혹은 거짓 ) True / False 둘 중 하나의 값만 저장
Int  기본 정수형 타입 -9223372036854775808~
9223372036854775807
Int8 8비트 크기의 Int -128 ~ 127
Int16 16비트 크기의 Int -32768 ~ 32767
Int32 32비트 크기의 Int -2147483648 ~ 2147483647
Int64 64비트 크기의 Int -9223372036854775808~
9223372036854775807
UInt Unsigned(부호 없음: 양수만 사용 ) Int 0 ~ 18446744073709551615
UInt8 Unsigned(부호 없음: 양수만 사용 ) Int8 0 ~ 255
UInt16 Unsigned(부호 없음: 양수만 사용 ) Int16 0 ~ 65535
UInt32 Unsigned(부호 없음: 양수만 사용 ) Int32 0 ~ 4294967295
UInt64 Unsigned(부호 없음: 양수만 사용 ) Int64 0 ~ 18446744073709551615
Float ( = Float32 ) 실수형 타입 : 소수점 아래 7~8자리 정확도 1.175494e-38 ~
3.402823e+38
Double ( = Float64) 실수형 타입 : 소수점 아래 15~16자리 정확도 2.225073858507201e-308 ~
1.797693134862316e+308
Character 하나의 문자만을 저장 x
String 문자열 ( 여러개의 문자 ) 저장 x

Playground에서 데이터 타입의 최대, 최소값 출력하기

// 정수형
Int.min
Int.max
Int8.min
Int8.max
Int16.min
Int16.max
Int32.min
Int32.max
Int64.min
Int64.max

UInt.min
UInt.max
UInt8.min
UInt8.max
UInt16.min
UInt16.max
UInt32.min
UInt32.max
UInt64.min
UInt64.max

//실수형
Float.leastNormalMagnitude
Float.greatestFiniteMagnitude
Double.leastNormalMagnitude
Double.greatestFiniteMagnitude

 

실행 시 아래와 같이 확인 가능합니다.

 

Xcode Playground ( ver. 12.5 )

 

728x90
728x90

 


출처:

 

Data Type Ranges

Learn more about: Data Type Ranges

docs.microsoft.com

 

 

Visual Studio 2019 기준

 

유형 이름 크기
(byte)
기타 이름 값의 범위
int 4 signed –2,147,483,648 ~ 2,147,483,647
unsigned int 4 unsigned 0 ~ 4,294,967,295
__int8 1 char -128 ~ 127
unsigned __int8 1 unsigned char 0 ~ 255
__int16 2 short
short int 
signed short int
–32,768 ~ 32,767
unsigned __int16 2 unsigned short 
unsigned short int
0 ~ 65,535
__int32 4 signed, 
signed int, 
int
–2,147,483,648 ~ 2,147,483,647
unsigned __int32 4 unsigned 
unsigned int
0 ~ 4,294,967,295
__int64 8 long long
signed long long
–9,223,372,036,854,775,808
~ 9,223,372,036,854,775,807
unsigned __int64 8 unsigned long long 0 ~ 18,446,744,073,709,551,615
bool 1 없음 false or true
char 1 없음 기본적으로-128 ~ 127

(/J로 컴파일한 경우 0에서 255) 
signed char 1 없음 -128 ~ 127
unsigned char 1 없음 0 ~ 255
short 2 short int
signed short int
–32,768 ~ 32,767
unsigned short 2 unsigned short int 0 ~ 65,535
long 4 long int 
signed long int
–2,147,483,648 ~ 2,147,483,647
unsigned long 4 unsigned long int 0 ~ 4,294,967,295
long long 8 없음 (__int64 와 동일 ) –9,223,372,036,854,775,808
~ 9,223,372,036,854,775,807
unsigned long long 8 없음
(unsigned __int64와 동일)
0 ~ 18,446,744,073,709,551,615
enum 다름 없음  
float 4 없음 3.4E±38(7개의 자릿수)*
double 8 없음 1.7E±308(15개의 자릿수)*
long double double과 동일 없음 double과 동일
wchar_t 2 __wchar_t 0 ~ 65,535

 

signed  VS  unsigned

  • signed : 부호가 있는
  • unsigned : 부호가 없는 (양수만 표현)

 

지수 표기법

    n E M = n * 10^M 

  • float 와 double의 범위를 보면 숫자가 특이하게 표현되어 있는 것을 볼 수 있습니다.
  • 이는 컴퓨터에서 아주 크거나 작은 수를  표기하는 방식입니다.
  • float의 경우에만 간단히 바꾸어 보자면 아래와 같습니다.
    ->              3.4E±38 = 3.4*10^-38 ~ 3.4*10^38

 

float VS double

  • float와 double 모두 실수를 표현하는 데이터 타입이지만 float가 double 보다 큰 수를 표현 할 수 있는 것을 볼 수 있습니다.
  • 하지만 그만큼 오차가 많으니 더 많은 소수점 자리수를 표현할 수 있는 double의 사용을 권장하고 있습니다.

 

 

 

728x90

+ Recent posts