자료형은 크게 정수형(integer type)
, 문자형(character type)
, 부동 소수점형(floating_point type)
으로 나눌 수 있다.
각각 정수
, 문자
, 실수
타입의 데이터를 저장한다.
컴파일러에게 미리 어떤 변수를 사용하겠다고 알리는 것.
[자료형] [변수이름]
char c;
int i;
char타입을 저장하는 변수 c
int타입을 저장하는 변수 i인 것이다.
하지만, 아직 변수의 값은 정의되지 않은 상태이다.
선언과 동시에 값을 넣고 싶으면 할당 연산자 '='
사용한다.
이것을 변수의 초기화(initialization)이라고 한다.
char c = "a";
int i = 100;
int height = 200, width = 100;
이렇게도 된다. 하지만 헷갈릴 수 있으니 피하는 것이 좋다고 한다.
int height, width = 100;
(width는 초기화 되었지만, height는 선언만 된 상태)
정수형에 존재하는 자료형
자료형 | 설명 | 바이트수 | 범위 |
---|---|---|---|
short | 부호있음 | 2 | -32768~32767 |
int | 부호있음 | 4 | -2147483648~2147483647 |
long | 부호있음 | 4 | -2147483648~2147483647 |
========= | ===== | ===== | ================= |
unsigned short | 부호없음 | 2 | 0~65535 |
unsigned int | 부호없음 | 4 | 0~4294967295 |
unsigned long | 부호없음 | 4 | 0~4294967295 |
-> 여러가지 타입의 정수형이 있는 이유 -> 용도에 따라 프로그래머가 선택하게 하여 메모리 공간을 절약함
-> short는 16비트, int는 32비트, long도 32비트를 사용함
-> 64비트형 정수인 long long형도 존재한다.
#define 사용
#define TAX_RATE = 0.15
income = salary - TAX_RATE*salary;
TAX_RATE가 income뿐만 아니라 여러 곳에서 사용됐다면
TAX_RATE가 변경되었을 경우 한번에 값을 수정할 수 있다는 장점이 있다.
const double TAR_RRATE = 0.15;
이렇게 해도 되지않나? 이렇게 써도 된다. 그렇다면 둘의 차이점은 무엇인가?
const는 메모리를 할당 받는다 즉, 변수에 대입한 값이 이미 계산이 완료된 상태로 들어있는 상태라는 의미
#define은 Type을 지정할 필요가 없다. 반대로말하면 const는 Type을 가지므로 표현 범위와 구조에 대해 명확하게 알 수 있다.
const의 경우 클래스의 생성자를 호출하는 과정에서 발생하는 멤버 이니셜라이져에서 한번 초기화할 수 있다.
const의 경우 버그 확인이 비교적 쉽다(컴파일러가 처리하기 때문에 디버깅 중 확인 가능)
define으로 쓸 경우의 장점이 뭘까
"A" -> 65
문자를 숫자로 나타내는 규격으로 아스키(ASCII)가 존재한다.
0~127숫자를 이용하여 문자를 표현한다.
char형이 문자를 저장하는데 주로 사용된다.
char code = 'A';
int code = ch;
cout << code;
// 출력 : 65
근디 char형은 9비트의 정수를 저장하는 자료형이다. -128~127정수 저장 가능.
참/거짓만 가질 수 있는 변수 (true or false)
주로 선택문이나 반복문에서 조건을 나타내는데 사용한다
bool on = true;
부동 소수점형에 해당하는 자료형
각각 32비트, 64비트, 64비트 메모리