변수와 메모리
- Bit, byte와 Hex 표현
- 메모리변수의 타입
- 상수
- 변수 → 변수의 정의, 초기화, 사용
- 변수의 타입
- 상수
Bit, byte와 Hex
0.5byte = 4bit = 2^4 = 16개의 숫자 표현 가능(0 ~ 15)
1byte = 8 bit = 2^8 = 256개의 숫자 표현 가능(0 ~ 255)
16진수 2개로 1byte를 보기 쉽게 표현 ← Hex 사용 이유
2진수 1010 1011 → 16진수 0x AB → 10진수 171
Hex 표현임을 알리기 위해 0x를 이용
Memory
메모리는 읽고 쓸 수 있는 바이트의 집합
메모리에는 다양한 종류가 있으나 여기서는 RAM을 지칭
칸이 나눠진 커다란 binary만 쓰는 메모장이라고 생각
각 바이트에는 번호가 붙어있고, 이를 “주소”라고 부름
주소 또한 컴퓨터이기 때문에 Hex로 표현
Char : 1 byte
Short : 2 byte
Int : 4 byte
따라서 10이라는 값을 저장하는 경우
Char : 0x 0A
Short : 0x 00 0A
Int : 0x 00 00 00 0A
Variable
따라서 변수란
메모리 주소에 붙이는 이름
변수를 만들면, 메모리에 변수를 위한 공간(바이트)이 확보됨
→ 공간의 크기(몇칸)은 변수의 타입에 따라 결정
변수의 값을 대입하면, 해당 공간에 값이 기록됨
변수를 만든다 → 변수를 정의한다고 표현
변수라는 개념이 없다면?
#include<iostream>
int main(){
int 0xFA84 = 10;
0xFA84 = 0xFA90 + 6;
}
Definition and Initialization
변수의 정의
(C++에서는) 변수를 정의할 때 반드시 타입을 명시해야 함
→ 바이트를 얼마나 확보해야 하는지 알아야 하기 때문
char a;
int age;
double rate;
std::string name;
변수의 초기화
변수를 정의하면서 초기값을 설정하는 것을 초기화라고 함
→ 변수를 생성하는 시점부터, 메모리에 값이 저장되어 있음
char a = 10;
int age = 22
Using a Variable
변수의 사용
변수가 정의된 이후에는 해당 메모리에 접근하기 위해 사용됨
메모리에 값을 읽고 쓰는 것이 변수의 사용
법칙
이름 앞에 타입(int, float등)이 붙어있다 → 변수의 정의
이름앞에 아무것도 없다 → 변수의 사용
Constant
상수
변수와 유사하지만, 초기화 이후 변할 수 없는 값
사용 목적 → 실수방지, 프로그램의 견고함
상수의 종류
리터럴 상수 : 12, 3.14, “KimMin” (r-values)
선언 상수 : const int n = 50;
상수 표현 : constexpr age = 22;
열거형
Defined : #define pi 3.141592
Tip
비쥬얼 스튜디오의 솔루션은 단순한 폴더 개념
관련 있는 여러 프로젝트를 하나로 묶어서 관리하기 위함
프로젝트는 개별적인 빌드 결과(exe 또는 dll)를 만드는 단위
프로젝트 내 소스파일들로 개별적으로 exe 또는 dll을 빌드하여 생성함
시작프로젝트 설정은 F5를 눌렀을때 실행할 결과물을 해당 프로젝트의 결과물(exe)로 설정함
Endianness
메모리에 바이트를 저장하는 순서는 프로세서에 따라 다름
높은 자리수를 낮은 메모리 주소에 저장하는 것은 Big endian
낮은 자리수를 낮은 메모리 주소에 저장하는 것을 Little endian
Big endian은 보기엔 헷갈리지만 효율성이 높아 주로 사용됨
00 00 00 0A의 경우 앞의 00이 높은 자리수 끝의 0A가 낮은 자리수
Casting
Implicit vs Explicit
int main(){
int a = 5;
double b = a; // implicit cast
double e = 1.23;
int f = (int)c; // c-style explicit cast
double g = 1.23;
int h = static_cast<int>(g);
//c++ style explicit cast
//(compile-time check + clear syntax)
'Language > C++' 카테고리의 다른 글
05.포인터 (0) | 2023.12.22 |
---|---|
04.Function (1) | 2023.12.22 |
03.basic-syntax (1) | 2023.12.22 |
01. C++ 프로그램의 구조 (0) | 2023.12.21 |
C++ 이론편 (0) | 2022.05.22 |
댓글