변할 수 있는 수
cf. 상수: 변할 수 없는 수
int a
=> int라는 자료형에 a라는 이름
선언된 변수는 언제나 이름으로 불러와서 그 값을 대입할 수 있다


코드 중간에 변수의 값을 변경할 수도 있다
변수는 사용되기 이전에 정의되어야 한다
블록에 대해서도 유효
{ int b;
{
int a;
b = 3;
}
a = 5;
}
b의 경우, 안쪽 블록에서 사용할 수 있으나
a의 경우, 정의한 안쪽 블록이 끝났기 때문에 사용할 수 없다
어디에 저장되는지는 알아야 하지만 컴파일러가 자동으로 결정해준다
변수 앞에 주소 연산자 &를 붙이면 알 수 있다
소수부가 없는 수
메모리에 저장하기 때문에 특정 상황에 알맞은 자료형을 지정해야 한다
2바이트, -32767 ~ +32767
4바이트, -2,147,483,648 ~ 2,147,483,647
4바이트, -2,147,483,648 ~ 2,147,483,647
8바이트, -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
unsigned가 자료형 앞에 붙게 되면 음의 값을 저장할 필요가 없다
음의 값에 쓰던 공간을 양의 값으로 가져와서 저장할 수 있는 최대값을 늘릴 수 있다
int는 최소 2byte 의 범위를 포함한 정수형이며, 32bit 까지는 아키텍처에 따라서 크기가 달라지지만 그 이상에서는 4byte로 고정된다
long 의 크기는 OS 와 어플리케이션의 bit에 따라 달라진다
출처 - https://hackerpark.tistory.com/entry/C%EC%96%B8%EC%96%B4-int-%EC%99%80-long-%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B4-%EB%8B%A4%EB%A5%BC%EA%B9%8C-short-short-int-int-long-int-long-long-long
??...그만 알아보자


소수부가 있는 수
ex. float, double
정수형 자료형을 가진 변수에 실수를 대입하면 소수점을 버리고 정수부만 출력된다
작은 문자형(하나의 단어)을 표현하고자 할 때 사용 -> 작은 따옴표
작은 문자형? 문자마다 대응되는 아스키코드 값(숫자)가 작은 문자
int a = 77;
char b = a; // b의 값은 M이 된다
한글은 넣을 수 없다
큰 문자형
추후에...
C++에서 어디까지 출력해야 하는지 알려 주는 null 문자('\0) 때문
큰따옴표("")는 명시적으로 null 문자가 포함되어 있다 => string
한 단어만 가져야 하는 char에 큰따옴표로 "a"를 넣게 되면 실제로는 a와 \0을 넣게 되므로 사용할 수 없다
0 혹은 1, fales 혹은 true
조건문에서 많이 사용하게 되는 변수
0 이외의 모든 수를 1로 저장한다


원의 넓이를 구하는 프로그램
#include <iostream>
#define PIE 3.1415926535
using namespace std;
int main() {
int r = 3;
float s = r * r * 3.14; // => r * r * PIE 대체
int r2 = 4;
float s2 = r2 * r2 * 3.14; // => r2 * r2 *PIE 대체
cout << s << endl;
return 0;
}
3.14가 아니라 3.1415926535라면 입력할 때마다 틀릴 수도 있고, 매번 입력하는 것이 번거롭기도 하여 문제가 된다
= 상수
#define PIE 3.1415926535를 해주면 원주율 수를 PIE로 대체할 수 있어진다
C와 달리 사용할 상수의 자료형까지 선언한다
#include <iostream>
using namespace std;
int main() {
const float PIE = 3.1415926535;
int r = 3;
float s = r * r * 3.14; // => r * r * PIE 대체
int r2 = 4;
float s2 = r2 * r2 * 3.14; // => r2 * r2 *PIE 대체
cout << s << endl;
return 0;
}
PIE = 10.0; // error
const float PIE;
PIE = 3.1415926535; // error
const float PIE = 3.1415926535; // correct
typeName(a) or (typeName)a
char ch = 'M';
cout << (int)ch << " " << int(ch) << endl;
C++에서만 존재하는 데이터형 변환 코드
static_cast<typeName>
추후에 프렌드를 배우며...
'+' = 두 개의 피연산자의 합을 계산
'-' = 첫번째 피연산자에서 두번째 피연산자를 뺀다
'*' = 두 개의 피연산자의 곱을 계산
'/' = 첫번째 피연산자를 두번째 피연산자로 나누었을 때의 몫
'%' = 첫번째 피연산자를 두번째 피연산자로 나누었을 때의 나머지 (실수 사용 불가)
계산 우선 순위는 기존 수학의 계산 우선 순위와 같고, 같은 우선 순위라면 왼쪽부터 오른쪽으로 진행한다
C++만의 데이터형
초기화하는 값을 보고 데이터형을 추론하여 자동으로 데이터형을 결정한다
auto n = 100;
auto x = 1.5;
auto y = 1.3e12L
n은 int형, x는 float형, y는 long long형으로 결정할 것이다
auto x =0.0;
float y =0;
auto z = 0;
auto를 사용한다면 x는 float형으로 지정되나, z는 int형으로 지정될 것이다
auto를 사용했을 때 원하는 자료형으로 지정되지 않아 에러가 발생할 수 있으므로 지나치게 의존하는 것은 지양하자