본문 바로가기
C++

2-1. C++ 변수와 기본 자료형

by kwon5346 2024. 1. 26.
반응형

1.  기본 자료형 (fundamental types)

출처 : https://cplusplus.com/doc/tutorial/variables/

표에서 이텔릭체로 표시된 문자는 코드에서 생략할 수 있다는 뜻이다. 예를 들면 unsigned long 이렇게 치면 

컴파일러는 unsigned long int로 인식을 한다는 뜻이다.

 

c++에서 문자열을 저장하는 방식은 string을 많이 사용하는데, string을 마치 표준처럼 많이 사용하지만

기본 데이터 타입이 아니라 스탠다드 라이브러리이다.

 

signed int는 음의 정수, 양의 정수, 0을 포함하고 unsigned int는 0과 양의 정수를 포함한다. 

그렇다면 int만 쓰지 왜 두가지로 나뉜것일까? unsigned가 특정 연산에서 signed보다 빠르다는 특징이 있기 때문이다.

 

표를 보면 char타입이 정수형에도 있고 문자형에도 있는데, char은 character 타입이기도 하고 integer 타입일수도 있다.

문자를 저장할때도 내부적으로는 정수로 저장을 하기 때문이다. 문자 A는 정수 65로 저장되듯이 말이다.

하지만 출력을 하면 문자로 바뀌어서 출력되기 때문에 정수로 출력을 하고싶다면 다시 int형으로 변환하여 출력해야 한다. 

 

데이터 타입마다는 한계가 있고, 메모리의 정해진 크기에 맞춰서 집어넣는 것이다. 동접자수가 100만명인 게임이 있다고 치면

int형은 4바이트가 아닌 4byte x 100 같은 방식으로 엄청난 메모리를 차지하게 된다. 그래서 가급적 메모리는 적게 쓰는 것이 좋다.

 

추가로 컴파일 할때 타입이 결정되는 auto라는 기능이 있다.

auto로 a,b를 선언하고 sizeof를 이용하여 자료형의 크기를 확인하였더니 a는 8바이트, b는 4바이트가 나왔다.

a에선 마지막에 f를 붙여주지 않았기 때문에 컴파일러가 double로 인식을 하고,

b는 f를 붙여줘서 컴파일러가 float으로 알아서 인식한 것이다. 

 

추가로 변수 선언 위치는 과거 c컴파일러의 경우 모든 변수 선언은 코드 위에 있어야 했지만

최근엔 변수를 사용하기 직전에 선언하는 것을 선호한다.

실제로 변수를 사용하는 부분과 선언부분이 가까워야 디버깅을 하기 편하기 때문이다.

반응형