개요

C++에서 사용되는 변수를 정리하고 궁금했던 부분을 기록한다.


1. 변수의 구성

변수는 이름, 크기, 값, 메모리 주소로 구성되어 있다.

 

1) 이름 : 변수의 이름

 

2) 크기 : 효율적으로 메모리 공간을 사용하기 위해 나뉜 데이터 타입

 

3) 값 : 변수가 가지고 있는 데이터 값

 

4) 메모리 주소 : (나중에 포인터 배울 때 자세히 들어감)

* 메모리 주소를 확인하는 방법 : 변수 앞에 &을 붙이고 출력해보자

cout << "float memoryAdress : " << &testNum << endl;

( ex. 0000007587AFFA04 과 같이 16진수(0~F)로 이루어진 16개의 숫자로 나타난다.)

 

 


2. 변수의 종류

1) 정수형

변수 타입 크기(byte) 기억 범위
short 2 -32768 ~ 32767
unsigned short 2 0 ~ 65535
int 4 -2147483648 ~ 2147438647
unsigned short 4 0 ~ 4294967295
long 4 (CPU최적화된 크기)  -2147483648 ~ 2147438647
unsigned long 4 (CPU최적화된 크기)  0 ~ 4294967295
long long 8 –9,223,372,036,854,775,808  ~ 9,223,372,036,854,775,807

 

* int 와 long의 차이
int는 기본적으로 32bit(4byte)에 고정된 크기를 갖고 있으나, long의 경우 CPU에 최적화된 크기로 설정되는 차이를 갖고 있다. 따라서 64bit의 OS에서 int는 4byte(32bit)의 크기를 갖지만, long은 8byte(64bit)의 크기를 갖는다.

 

라고 하는데.. 비쥬얼 스튜디오 디버그로 찍어보면 x64 x86 의 long 값이 모두 4byte로 나온다ㅠ

 

 

2) 실수형

변수 타입 크기(byte) 기억 범위
float 4 -1.2*(10^38) ~ 3.4*(10^38)
double 4 -2.2*(10^308) ~ 1.8(10^308)
long double 8 -2.2*(10^308) ~ 1.8(10^308)

 

* float과 double의 표현 범위

float과 double은 기억 범위 외에도 소수점의 표현 범위의 차이가 있다.

float = 소수점 7자리까지 표현 가능 , double = 소수점 15자리까지 표현 가능

 

 

3) 문자형

변수 타입 크기(byte) 기억 범위
char 1  -128 ~ 127
unsigned char 1 0 ~ 255
wchar_t 2 0 ~ 65535

 

* unsigned char

얘는 왜 쓰는거징...

 

 

4) 문자열

C++에서 문자열은 두 가지 방식으로 사용할 수 있다.

(1) string

string을 사용하기 위해서는 #include<string>가 필요하다.

(2) char[문자 수 + 1]

문자열은 문자형의 배열로 사용할 수 있다.

문자 수에 +1을 해주는 이유는 \0(null)값이 기본으로 들어가 있기 때문이다.

 

* 문자열의 크기

    std::string helloText = "Hello World!"; // 문자열은 "" 큰 따옴포를 쓴다
    cout << " helloText : " << helloText << std::endl;
    std::cout << " helloText의 크기 : " << sizeof(helloText) << std::endl;

위와 같이 출력하였을 때 helloText(문자열)의 크기가 40으로 나오는데 왤까요?? 

 

 


3. 변수 이름의 표기법

변수명의 가독성과 작업의 효율을 높이기 위한 변수명의 표기 방법

 

1. 카멜 표기법

단어의 접두어를 대문자로 표기하는 방법

첫 단어의 접두어는 소문자로 표기한다.

변수의 형태가 낙타의 봉과 같이 생겼다고 하여 카멜 표기법(camelCase)이라고 이름이 붙여졌다. 

 

예시) 

playerName 플레이어 이름
maxLevel 최대 레벨
playerAttackSpeed 플레이어 공격 속도

변수에 사용된 단어가 대문자를 통해 구분되어 가독성이 좋다. 

* 클래스나 함수와 같이 데이터 타입을 만드는 경우 변수명을 대문자로 표기하여 구분할 수 있다.

 

 

2. 파스칼 표기법

모든 단어의 접두어를 대문자로 표기하는 방법

카멜 표기법과 유사하나 첫 단어를 포함안 모든 단어에 접두어를 대문자로 표기한다.

 

예시) 

PlayerName 플레이어 이름
MaxLevel 최대 레벨
PlayerAttackSpeed 플레이어 공격 속도

파스칼 언어에서 사용하였기에 파스칼 표기법이라 이름이 붙여졌으며,

변수의 형태가 쌍봉 낙타같이 생겼다고 하여 쌍봉 낙타 표기법이라고도 한다.

 

카멜 표기법과 동일하게 단어가 대문자를 통해 구분되어 가독성이 좋다.

 

 

3. 헝가리안 표기법

변수명의 앞에 데이터 타입을 명시하는 방법

 

IDE(Integrated Development Environment/통합개발환경)가 발전되기 이전 개발 환경에서 변수명만으로 데이터 타입을 확인할 수 있도록 만들어진 표기 방법이다.

 

예시)

int nNumber
float  fHeight
string  strName

 

변수명만으로 데이터 타입을 유추할 수 있는 장점이 있으나,

가독성이 좋지 못하고 변수명을 기억하기 어려우며, 데이터 타입의 변화가 발생 시 변수의 이름을 변경해줘야 하는 공수가 들어가는 단점이 있다.

 

현대에는 IDE의 발전으로 데이터 타입의 확인이 편리해지면서 사용하고 있지 않는 방식이다.

728x90

'Program > C (C++,C#)' 카테고리의 다른 글

[C++] 구구단 & 별찍기  (0) 2022.04.12
[C++] 제어문  (0) 2022.04.12
[C++] 난수  (0) 2022.04.11
[C++] 연산자  (0) 2022.04.07
[C++] 입력과 출력  (0) 2022.04.06

+ Recent posts