주석은 코드의 설명을 위한 것으로
대체용 '테스트 코드'가 실행되는 것을 막을 수도 있다
// 를 사용해 짧은 주석을 달 수 있다
// 부터 시작해서 행의 끝부분까지는 컴파일러에게 무시당하며 실행되지 않는다
// This is a comment
cout << "Hello World!";

이렇게 뒤에 다는 것도 문제 없다
cout << "Hello World!"; // comment
주석을 여러 줄 달고 싶은 경우에는,
/* 와 */ 을 사용하며, /* 와 */ 사이가 주석으로 인식되어 실행되지 않는다
/* The code here, will be ignored by compiler.
not be executed */
cout << "Hello!";

변수는 '데이터 값을 저장하는 컨테이너'
C++로 예를 들면 :
char 값은 '' 작은 따옴표로 둘러싸임string 값은 "" 큰따옴표로 둘러싸임변수를 생성하기 위해선, '타입을 특정하고' '값을 할당한다'
type variableName = value;
type 부분에 C++ 변수타입, int 같은 것들이 들어가고
variableName 부분에 변수의 이름을 지정
value 부분에 값을 할당해 주면 된다
int myNum = 15;
cout << myNum;

맨 위에 int main() 은 메인 함수이기 때문에
메인 함수 내부에 넣어줘봤는데 정상 작동했다
변수부터 만들고 값은 나중에 할당하는 방법도 있다
int myNum;
myNum = 15;
cout << myNum;
한 번 값을 할당한 변수에 새로 값을 지정해 주게 되면
overwrite, 덮어쓰기가 된다
int myNum = 15; // myNum 은 15
myNum = 10; // 10으로 덮어쓰기
cout << myNum; // 10으로 출력됨

int myNum = 5; // integer, 정수
double myFloatNum = 5.99; // float, 실수
char myLetter = 'D'; // character, 단일 문자
string myText = "Hello"; // string, 문자열
bool myBoolean = true; // boolean, 참/거짓
cout 와 << 를 사용해 변수도 출력할 수 있다
블루프린트의 "Format Text" 노드처럼,
문자와 {변수} 같은 느낌으로 조합가능
int myAge = 30;
cout << "I am " << myAge << " years old.";
띄어쓰기도 제대로 넣어줘야한다

변수 타입이 다르더라도 문제없다
string name = "John";
int age = 35;
double height = 6.1;
cout << name << " is " << age << " years old and " << height << " feet tall.";

당연히 연산자를 통해 변수 계산도 가능
int x = 5;
int y = 10;
int sum = x + y;
cout << sum;

같은 타입 의 변수를 여러 개 생성해주려면,
, 로 구분해 주면 된다
int x = 5, y = 6, z = 50;
cout << x + y + z;

하나의 값을 여러개의 변수에 할당하는 방법도 있다
int x, y, z;
x = y = z = 50;
cout << x + y + z;

모든 C++ 변수는 unique names, 고유의 이름으로 정의되어야 합니다.
이 유니크한 이름들을 identifiers, 식별자 라고 부른다
식별자 이름 길이에 딱히 제한은 없지만,
제대로 "알아볼 수 있고" "유지될 수 있는(덮어쓰기 방지)" 이름으로 해야한다.
ex) x / y / age / sum / totalVolume
// 알아보기 쉽게
int minutesPerHour = 60;
// 알아보기 어렵다
int m = 60;
변수 이름을 짓는데 가장 일반적인 룰 은 :
만약 자신이나 다른 누군가가 변수의 값을 수정할 수 없게 하고 싶다면,
const 키워드를 활용
변수를 "상수"로 지정해 불변화, 읽기 전용 으로 만들어준다
const int myNum = 15; // myNum 은 항상 15
myNum = 10; // 덮어쓰기 시도해도 안바뀐다

아래 같이 변하지 않는, 변하면 안되는 값에 써먹으면 좋다
const int minutesPerHour = 60;
상수 인 변수를 정의할 때는, 반드시 정의할 때 값을 같이 할당해줘야한다.
const int minutesPerHour = 60;
아래 같이 일단 정의하고 값을 정해주려 할 경우, 에러가 뜬다
const int minutesPerHour;
minutesPerHour = 60; // 에러

// Student data
int studentID = 15;
int studentAge = 23;
float studentFee = 75.25;
char studentGrade = 'B';
// Print variables
cout << "Student ID: " << studentID << "\n";
cout << "Student Age: " << studentAge << "\n";
cout << "Student Fee: " << studentFee << "\n";
cout << "Student Grade: " << studentGrade << "\n";

// Create integer variables
int length = 4;
int width = 6;
// Calculate the area of a rectangle
int area = length * width;
// Print the variables
cout << "Length is: " << length << "\n";
cout << "Width is: " << width << "\n";
cout << "Area of the rectangle is: " << area << "\n";

cout는 화면 출력에 쓰이는 키워드,
cin 은 "유저의 입력을 받는데" 쓰이는 키워드
cin은 "미리 정의된 변수"로 :
추출 연산자 >> 와 함께 사용해 키보드 데이터를 읽는다.
아래 예시 코드는 키보드 입력을 받아 변수 x 에 할당해 x 를 출력한다
int x;
cout << "Type a number: "; // 숫자를 입력하고 엔터
cin >> x; // 유저 입력을 받는다
cout << "입력한 숫자: " << x; // 화면에 출력

이유는 모르겠지만 입력하지도 않은 숫자가 뜬다
※ cout 은 "see-out" 이라고 부르고,
출력에 쓰이며, << 삽입 연산자와 같이 쓴다.
cin** 은 "see-in" 이라고 부르며,
입력에 쓰이고, >> 추출 연산자와 같이 쓴다.
아래 예시를 활용하면
유저에게 2가지 숫자를 입력받아 합산한 결과를 화면에 출력할 수 있다
int x, y;
int sum;
cout << "첫 번째 숫자를 입력해주세요: ";
cin >> x;
cout << "두 번째 숫자를 입력해주세요: ";
cin >> y;
sum = x + y;
cout << "두 숫자의 합은: " << sum;

직접 해볼 때와 달리 학습 페이지에서 예제 실행을 눌러서 들어가면 문제없이 화면이 나온다.
같은 코드를 복사해서 구동해도 직접 할때랑 똑같이 안된다. 이유 불명.

cin 과 cout 는 모두 <iostream> 라이브러리에 포함된다
변수는 특정 데이터 타입을 지녀야 한다.
int myNum = 5; // Integer (whole number)
float myFloatNum = 5.99; // Floating point number
double myDoubleNum = 9.98; // double = float
char myLetter = 'D'; // Character, 단일 문자, `''` 로 감싸야함
bool myBoolean = true; // Boolean
string myText = "Hello"; // String, 문자열, `""`로 감싸야함
"데이터 타입"은 변수가 담을 정보의 크기와 형태(타입)을 지정한다
소숫점이 없는 숫자면 int
소수점이 필요하면 float 나 double
float 와 double 의 경우
float 는 소수점 6-7자리, double 은 소수점 15자리 정도까지
"정밀도"의 차이가 있기 때문에,
대부분의 계산에선 double을 사용하는 것이 안전하다
또한 이러한 실수 변수를 사용하는 경우 scientific number도 담을 수가 있는데
ex) 10의 거듭제곱 e 가 포함된 숫자 등
float f1 = 35e3;
double d1 = 12E4;
cout << f1;
cout << d1;

bool 키워드를 사용하며
값은 true 일 경우 1 , false 일 경우 0 을 리턴한다(돌려준다)
bool isA = true;
bool isB = false;
cout << isA << "\n"; // 1 출력
cout << isB; // 0 출력

char 는 단일 캐릭터, '' 작은 따옴표로 둘러쌓인 단일 문자를 저장한다
ASCII 값도 가능
string 타입은 "문자 시퀀스", 문자열=텍스트 를 저장한다
"" 큰 따옴표로 둘러쌀 필요가 있다
※ string 을 사용하기 위해서는,
코드에 헤더(헤더 파일 라이브러리) 를 추가해줄 필요가 있다
#include <string>
위처럼 설명은 나와있지만 확인 결과
헤더가 없어도 일단 간단한 경우는 작동한다
// Create variables of different data types
int items = 50;
double cost_per_item = 9.99;
double total_cost = items * cost_per_item;
char currency = '$';
// Print variables
cout << "Number of items: " << items << "\n";
cout << "Cost per item: " << cost_per_item << currency << "\n";
cout << "Total cost = " << total_cost << currency << "\n";

+ : 두 값을 더한다
값과 값, 변수와 값, 변수와 변수 모두 가능
C++ 에서는 변수를 다음과 같이 나누는데 :
+
-
*
/
% : 나머지 계산 (나눈 다음의 "나머지")
++ : increment, 1씩 증가
-- : decrement, 1씩 감소
Assignment operators 는 변수에 값을 대입,할당 하는데에 쓰인다
=
+= : 현재 변수의 값에 추가로 값을 더해준다
-= : 추가로 값을 빼준다
*= : 현재 변수의 값에 추가로 값을 곱해준다
/= : 현재 변수의 값을 나눠준다
%= : 특정 값으로 나눈 나머지를 대입해준다
&= : 특정 값으로 나눈 "몫"을 대입해준다
|= ^= >>= <<= 같은 비트 연산자들
두 변수의 값을 비교할 때 쓰이며, 프로그래밍에서 매우 요긴하게 쓰인다
비교 연산자의 리턴값은 1 혹은 0 , 즉 true/false 이며
boolean 값으로 나온다
== : equal to, 같으면 true
!= : not equal, 다르면 true
> : greater than, 크면 true
< : less than, 작으면 true
>= : greater than or equal to, 크거나 같으면 true
<= : less than or equal to, 작거나 같으면 true
비교 연산자처럼, true/false의 boolean 값을 리턴해준다
&& : and, 둘다 참이면 true
|| : or, 둘 중 하나 참이면 true
! : not, 불린 값을 반전시켜준다
ex) !(x < 5 && x < 10)