
초기화 되지 않은 변수
C++에서는 변수 초기화가 되지 않으면 쓰레기 값이 들어가게 된다, 이때 쓰레기 값이란 해당 메모리 주소에 있는 아무 의미 없는 값을 의미한다 (이 값은 매번 달라질 수 있다)
C++에서 자동 초기화가 없는 이유는 아주 옛날 성능 최적화 때문이다 ex) 10000개의 변수를 자동초기화 하기에 옛날 하드웨어 스펙상 힘들었기 때문..
컴파일러에 따라 초기화 되지 않은 변수를 사용할 시 error를 뱉게 할 수 있다

요즘같은 시대의 하드웨어 스펙에서 초기화를 한다고 전혀 문제될게 없기 때문에 항상 변수는 선언하고 초기화를 하는 습관을 들여야 한다
KeyWords
C++에서는 C++23 기준 92개 정도의 keyword가 존재한다, 그렇다면 keyword란 무엇일까?
Keyword란 C++ 자체에서의 특별한 의미, 기능을 가지는 단어이다

또한 Special Identifier들이 존재하는데 이 식별자들은 특정 맥락에서 사용될때만 keyword처럼 의미를 가지고 그렇지 않으면 의미를 가지지 않는다 ex) override, final, import.. 등등
Naming Identifier
변수, 함수의 이름들을 식별자 (Identifier)라고 칭하고 C++에는 이러한 식별자 명명 규칙이 존재한다
그렇다면 올바른 명명 규칙은 뭘까?
위의 내용을 지키면서 회사나 사용하는 툴의 Coding Convention을 따르는게 제일 좋다
WhiteSpace
C++에서 일부 Syntax는 공백으로 구분이 되어야 한다
int x; //자료형과 변수 사이의 공백, 이때 공백이 얼마나 있던 상관하지 않는다
int x = 10; //이것도 가능
intx; //int라는 keyword를 컴파일러가 인식하지 못해 에러가 발생한다
하지만 " "안에서의 공백의 양은 그대로 반영된다
std::cout << "He llo"; //He llo가 출력됨
그리고 " "내부에서 줄바꿈은 허용되지 않는다
std::cout << "Hello
World!"; //error
std::cout << "Hello"
"World"; //가능
또한 함수의 return과 이름을 공백으로 구분해야 한다
int main() //반환형, 이름 사이의 공백
코드 가독성 향상
컴파일에는 문제가 없지만 공백을 사용하지 않으면 가독성이 떨어지기 때문에 공백을 사용하는 편이 좋다
int main(){std::cout<<"Test"<<endl;return0;} //가독성 저하
이러한 가독성 문제 해결을 위해 공백과 줄 바꿈, tab을 적절히 사용해야 한다
int main()
{
std::cout << "Test" << std::endl;
return 0;
}
//가독성 향상
또한 한 줄의 코드 길이가 너무 길어진다면 적당한 지점에서 줄을 나누는게 좋다 (80자 정도)
std::cout << "This is another really, really, really, really, really, really, really, "
"really long line\n";
만약 긴 코드가 연산자로 이루어져 있다면 줄 바꿈 시 연산자를 앞에 사용하는게 좋다
std::cout << 3 + 4 * 7 / 8 * 8;
std::cout << 3 + 4 * 7
/ 8 * 8;
그리고 주석과 대입연산자의 위치를 맞춰주는것도 가독성 향상에 도움이 된다
cost = 100; //TestComment
attack_speed = 5.5f; //TestComment
value = 5000; //TestComment
Literal
Literal이란 코드에 직접 삽입된 고정된 값을 의미한다
int a {5};
std::cout << "Test Text" << std::endl;
여기서는 5, Test Text가 Literal값이 된다
변수는 초기화, 할당을 통해 값을 가질 수 있고 Literal은 고정된 값 그 자체인 상수를 의미한다
Operator
C++에서의 연산자는 굉장히 다양하다 (+, -, *, /, %, =, <<, >>, == 등등)
이러한 연산자를 표현할 때 operator를 붙혀 표현한다 (operator+, operator/)
단항 연산자
피연산자가 하나인 연산을 단항 연산이라고 한다
ex) -5는 5에 operator- 연산을 하여 부호를 반대로 바꾸는 연산이다
이진 연산자
두개의 피연산자끼리 하는 연산을 이진 연산이라고 한다
ex) 3 + 4, std::cout << 4, std::cin >> a
삼항 연산자
세개의 피연산자끼리 하는 연산을 삼항 연산이라고 한다
ex) Hp > 0 ? "Live" : "Dead", 이런식으로 조건이 참이면 ? 뒤로, 거짓이면 : 뒤의 코드를 실행한다
일부 연산자는 두 가지 이상의 의미를 갖는다 ex) operator-는 부호를 반대로 변경의 의미도 있고 뺄셈의 의미도 있다
이렇게 연산을 하면 수학에서와 똑같이 체인하여 연산이 가능하다
a = 3 + 5 * 9; // 5 * 9의 결과값과 3을 더해서 a에 할당하는 chain
또한 이렇게도 사용이 가능하다
x = y = 9; //y에 9거 할당되고 x에 y의 값인 9가 할당되는 chain
x += y; // x = x + y;