프로그램을 만든다는것은 어떤 값을 가공해서 어떤 결과를 만든다는 것이다. 우선 여기서 어떤 값을 만드는 방법을 알아보자.
지정된 공간에 이름을 부여하고 그 공간의 데이터를 다룰수 있도록 돕는 것
데이터를 다루기 위해서는 메모리에 사용 목적에 따라 원하는 만큼의 공간을 생성해야 합니다. 이때, 사용 목적에 따른 메모리 공간을 C++에서는 자료형
으로 미리 예약어로 정해 놓았습니다. 이에 자료형을 이야기해줌에 따라 컴퓨터는 정해진 메모리를 생성해 주게 됩니다.
앞으로 사용할 단어입니다. 정의란? 우리의 목적에 맞게 그 내용을 정의하는 것을 의미하고, 선언이란 우리가 사용하기 위해 실제로 컴퓨터의 메모리에 사용할 공간을 생성하는 것을 의미합니다.
C++에서 미리 정해놓은 문법이기 때문에 따로 정의의 과정이 필요하지 않습니다.
int a; //a라는 이름을 가진 변수 생성
double b; //b라는 이름을 가진 변수 생성
- 일단 변수가 선언되면 메모리에서 사용할 공간이 정해지는데 이 공간에는 전에 사용하던 값이 남아있습니다. 이 값을 "쓰레기 값"이라고 부릅니다.
- 일단 변수를 선언만 할 경우 그 변수에는 쓰레기값이 존재하게 되므로 사용할 때 조심합시다.
(int자료형은 정수를 저장할 목적인 자료형으로 4byte,
double자료형은 실수를 저장할 목적인 자료형으로 8byte의 크기를 갖습니다.)
a;
b;
해당 변수의 이름을 입력하면 그 변수에 접근이 가능합니다.
a = 1;
b = 2.0;
- 해당 변수에 대입연산자(=)를 통해 값을 저장하는 것이 가능합니다.
- 저장하는 값은 자료형에 맞는 값을 넣어 주어야 합니다.
int a = 1
double b = 2.0
- 선언하는 동시에 그 값을 지정하여 저장하는것을 "초기화"라고 합니다.
- 마찬가지로 자료형에 맞는 값을 넣어주도록 합시다.
1) 값을 저장하는 것은 "변수"에만 가능합니다. 즉, 100과 같은 상수에는 어떤 값을 저장하는것이 불가능 합니다. (100 = 2는 불가능)
const int a = 1; // 이 경우 a는 변수가 아니라 상수로 변한다.
2) 위의 경우처럼 const키워드를 통해 변수를 상수로 만드려고 한다면, 반드시 초기화방법을 통해 선언해야 합니다.
const int a;
a = 3; // 상수에는 변수를 저장하는것이 불가능.
3) 변수의 이름은 예약어가 아니어야 하고, 다음의 규칙을 지켜야 합니다.
예약어: C++에서 이미 쓰임세가 정해진 단어들을 의미합니다. 종류가 많기 때문에 구글링을 통해 알아봅시다.
규칙: 다음의 상황이 아니어야 함
(이미 같은 이름이 있는 경우, 숫자가 맨 앞에 위치하는 경우, '_'(underscore)를 제외한 특수문자가 들어간 이름)
(당연히 띄어쓰기는 불가능 합니다)
(8bit = 1byte 인거 아시죠?)
1) void
2) 문자열
자료형: char
선언: 작은 따옴표로 감싸줘야합니다.
(큰 따옴표는 배열을 이용해 문자열을 선언할 때 사용합니다)
3) 정수
자료형: int
선언: 사용가능범위에 유의합시다.
(bool자료형에서 0은 false, 1은 true를 의미합니다.)
(8진수 표기: 0, 8진수로 표현하고 싶을 때 그 숫자앞에 사용합니다.)
(16진수 표기: 0x 16진수로 표현하고 싶을 때 그 숫자앞에 사용합니다.)
4) 실수
자료형: float, double
선언: 실수는 선언후 값을 넣으면 "부동소수점"이라는 방법으로 값을 저장합니다. 이 표기법은 수를 가수e지수
이런식으로 표기하는 방법입니다.
(ex) 0.00123 = 1.23e-3)
(부동소수점은 소수점이 둥둥 떠다닌다는 의미입니다.)
각 자료형이 차지하는 메모리의 크기를 기억합시다. 후에 내용을 이해하는데 도움이 될거에요.
이 자료형들은 C++언어에서 기본으로 제공되는 자료형들이에요.
c++에서는 변수에 우리가 설정한 자료형에 맞지 않는 자료를 넣을때, 오류를 발생합니다. 이를 위해서는 해당 변수에 넣기 전에 그 형태를 변경해 주는 작업이 필요합니다.
c++에서는 편의를 위해, 다음의 경우 자동으로 형변환 되어 변수에 저장되도록 만들어 두었습니다.
대입연산에서, 왼쪽과 오른쪽의 자료형이 같아야하기 때문에 다를경우 이를 자동으로 바꿔주는 기능이 있습니다.
- 정수 -> 실수
double a = 10; // 대입연산, 자동 형변환
(이 경우 10 -> 10.0)
- 실수 -> 정수
int a = 10.5;
이 경우 실수형이었던 10.5가 10으로 형변환되어 저장됩니다.
(이때 소수점은 반올림이 아닌 버림입니다.)
- bool 자료형
bool a = 10; // true bool a = 0; // false
bool 자료형의 경우 0이 아닌수는 true로, 0은 false로 자동으로 바꾸어 저장합니다.
- 이 외에도 다양한 경우들이 있습니다.
연산시에 데이터손실을 최소화 할 수 있도록 형변환이 됩니다. 예를들면, 덧셈시에 int가 double로 바뀌는 경우가 있겠습니다.
int num = 1;
double a = double( num );
double b = (double)num;
둘 다 int였던 num 변수가 double형으로 바뀐다.
(이때 임시 변수가 수반된다고 한다.
즉,double (num)
부분에서 double형태의임시 변수
가 생성되고
int형태의num
이 이곳으로 저장되며 형변환을 일으킨다고 한다다고 한다.)
변환할 자료형(변수)
의 방법: C와 C++두 언어에서 사용 가능한 방법이다
(변환할 자료형)변수
의 방법: C++에서만 사용 가능한 방법이다.
그렇다면 위의 두 경우에 해당되지 않는 경우, 즉 오류를 발생하는 경우에는 어떤것이 있을까요?
(주로 큰 타입에서 작은 타입으로 변환할 때 발생)
double -> float
float -> short int
int -> float
int -> short int