소년코딩

02.01 - 자료형과 변수 정의의 기본 (The basis of data type and variable definition)

메모리 주소 지정 (Addressing memory)

'01-02 - 변수, 초기화 및 할당' 포스트에서 변수란 '값을 저장하고 사용할 수 있는 메모리 조각' 이라고 하였다. 컴퓨터에는 프로그램에서 사용할 수 있는 RAM이 있다. 변수가 정의되면 메모리의 조각이 그 변수로 설정된다.

메모리의 가장 작은 단위는 0 또는 1의 값을 가지는 숫자 비트(bit)다. 비트는 꺼지거나(0) 켜지는(1) 전등 스위치처럼 생각할 수 있다. 임의의 메모리 세그먼트를 보면, 011001000111 ... 과 같은 세그먼트를 볼 수 있다. 메모리는 메모리 주소라고 하는 순차적인 단위로 구성된다. 택배원이 집 주소를 이용해 집을 찾는 것처럼 메모리 주소를 이용해 특정 위치의 메모리 내용에 접근할 수 있다. 현대 컴퓨터에서 일반적으로 가장 작은 메모리 단위는 8비트로 구성된 바이트(byte)다.

아래 그림은 데이터의 해당 바이트와 함께 순차적인 메모리 주소를 보여준다.

MemoryAdresses

컴퓨터의 모든 데이터는 일련의 비트(bit)이기 때문에 자료형(data type)을 사용해서 메모리의 내용을 의미 있는 방식으로 해석하는 방법을 알려줄 수 있다. 이전 포스트들에서 자료형의 한 예인 int(정수)를 써왔다. 변수를 정수로 선언할 때, 컴파일러에 "이 변수가 처리하는 메모리 조각은 소수점이 없는 숫자로 해석된다." 라고 말하게 된다.

변수에 값을 할당(assign)하면 컴파일러와 CPU는 내부적으로 해당 자료형의 적절한 비트 시퀀스로 인코딩하는 세부사항을 처리한다. 값을 다시 요구하면 값은 메모리의 비트로부터 재구성(reconstituted)된다.

C++에는 많은 자료형이 있다.


기본 자료형

C++에는 특정 데이터 유형에 대한 지원이 내장되어 있다. 이것을 기본 자료형이라고한다.

Category Types Meaning Example Notes
boolean bool true or false true
character char, wchar_t, char16_t, char32_t a single ASCII character 'c' char16_t, char32_t introduced in C++11
floating point float, double, long double a number with a decimal 3.14159
integer short, int, long, long long a whole number 64 long long introduced in C99/C++11
void no type void n/a

변수 정의하기 (Defining a variable)

'Chpater01. C++ Basics'에서 정수 변수를 정의하는 방법을 배웠다.

int a; // int는 자료형, a는 변수의 이름(=식별자)

다른 자료형의 변수를 정의하는 방법도 같다.

type varName; // type은 자료형(ex: int), varName은 변수의 이름(=식별자)

아래의 예제는 5가지 자료형에 대한 각각의 변수를 정의한다.

bool bValue;
char chValue;
int nValue;
float fValue;
double dValue

void 자료형은 다른 의미가 있는 특별한 규칙이 있으므로 아래와 같은 예제는 작동하지 않는다.

void vValue; // void 자료형을 이용한 변수 정의는 할 수 없다.

여러 변수 정의하기 (Defining multiple variables)

변수 이름을 쉼표(,)로 분리하여 단일 명령문에서 같은 자료형의 여러 변수를 정의할 수 있다.

아래는 같은 기능을 하는 코드다.

int a, b;
int a;
int b;

또한, 같은 줄에 정의된 여러 변수를 초기화할 수도 있다.

int a = 5, b = 6;
int c(7), d(8);
int e{9}, f{10};

프로그래머가 단일 명령문에서 여러 변수를 할 때 흔히 하는 세 가지 실수가 있다.

  1. 첫 번째 실수는 변수를 정의할 때 각각의 변수에 자료형을 주는 것이다.
nt a, int b; // wrong (compiler error)

int a, b;    // correct
  1. 두 번째 실수는 단일 명령문에서 여러 자료형의 변수를 동시에 정의하려는 시도다. 다른 자료형의 변수는 별도의 명령문에서 정의해야 한다.
int a, double b; // wrong (compiler error)

int a; double b; // correct (but not recommended)

// correct and recommended (easier to read)
int a;
double b;
  1. 마지막 실수는 위험하다. 하나의 초기화(initialization)문을 이용해서 두 변수를 초기화하려는 실수다.
int a, b = 5;   // wrong (a는 초기화되지 않는다.!)

int a= 5, b= 5; // correct

cpp 번역: 이 포스트의 원문은 http://www.learncpp.com/cpp-tutorial/2-1-fundamental-variable-definition-initialization-and-assignment/ 입니다.

댓글 로드 중…

블로그 정보

소년코딩 - 소년코딩

소년코딩, 자바스크립트, C++, 물리, 게임 코딩 이야기

최근에 게시된 이야기