ted0505
Computational Art & Study
ted0505
전체 방문자
오늘
어제
  • 분류 전체보기 (79)
    • Computer Science ( CS ) (0)
    • Computational Thinking (6)
    • 프로젝트 개발일지 (1)
    • Coding (52)
      • C++ (39)
      • JavaScript (2)
      • P5.JS (7)
      • Python (0)
      • HTML5 (1)
      • CSS (0)
    • Game Engine (18)
      • Unreal Engine 4 (18)
      • Unity (0)
    • Physically Based Rendering (0)
    • FilmMaking (0)
    • 잡다 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ted0505

Computational Art & Study

[ C++ ] Variable 과 Fundamental Data Type
Coding/C++

[ C++ ] Variable 과 Fundamental Data Type

2022. 1. 13. 15:27

C++ Fundamental Data Type

Fundamental Data Type

#string 타입은 Fundamental Data Type이 아님. std 라이브러리에 속해있는 것.

 

#signed는 음의 정수와, 0, 양의 정수를 포함.

#unsigned 는 0, 양의 정수를 포함하되, 음의 정수는 포함하지 않음.

왜 ? - 저장되는 방식이 다르기 때문에, unsigned가 계산에 빠른 특징이 있음.

 


C++ 의 변수 초기화 방법

C++에서 변수를 초기화하는 방법은 3가지다.

 

1. copy initialization

2. direct initialization

3. uniform initialization

int value = 0; 		// copy initialization
int value(0); 		// direct initialization
int value{ 0 }; 	// uniform initialization

차이점

- 데이터 타입이 안 맞을 경우, uniform initialization 은 엄격한 편.

copy 와 direct 는 경고만 해주고 컴파일링함. 

int 는 정수형이기 때문에, 리터럴 값의 알맞은 타입이 아니다.

copy 와 direct 는 "possible loss of data" 와 같은 경고를 하며, 리터럴 데이터가 손실될 수 있다고 한다.

즉, 소수점은 제외한 3의 값만 담는 것이다.

이와 다르게 uniform은 에러가 뜨며, 컴파일이 안된다.

 


데이터 타입 저장 크기 / 오버플로우

short integer 데이터 타입은 16bit의 크기, 즉 2bytes (8 bit = 1 byte) 크기를 가진다.

bulid

short 데이터 타입에 담을 수 있는 최대 값, 최소 값 ( -32767 ~ 32767 ) 이다.

 

overflow

그럼, short 최대 값에서 초과할 경우 어떻게 되는가 ?

overflow

데이터 타입의 최대 값을 넘을 경우에는, 데이터 타입의 최소 값으로 넘어간다.

최소 값에서 더 내려가도, 데이터 타입의 최대 값으로 넘어간다. 

 

이러한 현상을 overflow 라고 한다.

 

*예시

 


C++ 11 고정 너비 정수 (Fixed-width Integers)

C++에서는 데이터 타입의 크기를 최소 크기만을 규정하고 있기 때문에, 플랫폼, 컴파일마다 구현된 크기가 다를 수 있다. integer가 2 byte였다가, 4 byte 인것처럼. 

 

플랫폼마다 크기가 다르면 불확실성을 가질 수 있기 때문에 C++ 11버전에서는 어떤 플랫폼이던간에 같은 데이터 크기를 사용할 수 있는 '고정 너비 정수' 가 채택됐다.

 

 

int16_t 일 경우, int 타입 중에 16 bit ( 2 byte ) 짜리 데이터 타입 ( short ) 을 사용하겠다는 것이다. int_fast8_t 일 경우, int 타입 중에 가장 빠른 8 bit ( 1 byte ) 짜리 데이터 타입 ( char ) 을 사용하는 것이다.

 

 

 

 

 

 

이미지 출처

https://www.cplusplus.com/doc/tutorial/variables/

 

'Coding > C++' 카테고리의 다른 글

[ C++ ] 02.08 상수 constants  (0) 2022.01.18
[ C++ ] 02.05 - 부동 소수점 숫자 ( floating point numbers )  (0) 2022.01.14
[ C++ ] namespace_명칭공간  (0) 2022.01.12
[ C++ ] 헤더 파일 / 헤더 가드  (0) 2022.01.12
[ C++ ] 선언과 정의의 분리  (0) 2022.01.12
    'Coding/C++' 카테고리의 다른 글
    • [ C++ ] 02.08 상수 constants
    • [ C++ ] 02.05 - 부동 소수점 숫자 ( floating point numbers )
    • [ C++ ] namespace_명칭공간
    • [ C++ ] 헤더 파일 / 헤더 가드
    ted0505
    ted0505

    티스토리툴바