C++기초

22년 3월 4일

hyrule 2022. 3. 17. 16:47

//<--- 주석. 주석은 코드에 대한 설명을 달아주고
//실제 코드가 동작될때는 무시된다.



//실무에서는 이런 식으로 주석을 작성 함.
//2022.03.04
//작성자: xxx
//내용: 

//여러 줄을 주석처리 할 때는
/*
* ~~~
*/

//앞에 #이 붙어있으면 전처리기가 된다.
//전처리기
/*
 - 프로그램이 만들어지는 순서: 컴파일(코드 번역작업) -> 실행파일 생성
 - 전처리기는 컴파일을 하기 전에 먼저 처리가 된 후에 컴파일이 일어나게 된다.
 - include는 컴파일을 하기 전에 원하는 헤더파일을 여기에 포함시켜서
 - 해당 헤더파일에서 제공되는 기능을 여기에서 사용할 수 있도록 해 주는 기능이다.
*/
//iostream: c++의 표준 입력 및 출력 기능을 제공해주는 헤더 파일이다.
//나중에 실제 게임을 만들 때는 콘솔창에 출력을 하는 것이 아니기 때문에 그 때는 사용할 일이 별로 없다.(C++ 과정 중에만 사용) 
#include <iostream>
#include <stdio.h>


/*
C++ 콘솔의 진입점 함수이다.
main의 {}(코드블럭) 안에 있는 코드가 실제로 동작이 된다.
콘솔창에서는 main을, Windows에서는 winmain을 사용한다.
-이것을 '진입점'이라고 하며, 프로그램이 시작되는 지점이다.

우리가 앞으로 2달동안 C++를 공부하면서 사용할 제일 기본적인 템플릿.
*/


/*
코드가 완성이 되어 실행을 하고자 한다면 Ctrl + Shift + B를 이용해서 빌드를 한다.
빌드를 하면 컴파일도 자동으로 이루어지게 된다.
빌드를 하면 C:\Programming\C\220304\Debug 에 실행 파일이 생성됨.

또는 Ctrl+F5를 누르면 컴파일 후 바로 실행도 가능하다.
*/



 int main()
 {
 /*
 * C++에서 제공되는 대부분의 기능들은 std라는 namespace로 감싸져 있다.
 * C++은 car, Car 서로 다르다.(대소문자를 엄격히 구분함)
 * 나중에 코드가 복잡해지면 중복된 이름으로 발생할 수 있으므로
 * 이름(함수)이 중복되는 것을 방지하기 위해서 namespace로 기능들을 감싸주었다.
 * 이 경우 std namespace를 통해서 안의 기능들을 접근해야 한다.
 * cout은 std namespace 안에 포함이 되어 있기 떄문에 ::(범위 지정 연산자) 를 통해서
 * 접근하게 된다.
 * std::cout <-- std 안에 있는 cout 이라는 의미로 사용한다.
 * 만약 여기에 cout이라는 이름으로 다른 걸 만들었다면
 * std::cout, cout은 서로 다르다.
 * 
 * ';'은 마침표와 같다. 한 줄이 끝났을 경우 ;을 붙여준다.
 */

 //코드는 위에서 아래로 실행이 된다.
 //또한, 항상 그런것은 아니지만 보통 오른쪽에서 왼쪽으로 동작이 된다.
 //std::cout << <-- c++에서 제공하는 기본 출력 기능.

 /*
 \n: 한줄 개행
 \t: 탭키
 이것들은 문자로 취급된다.
 */
 std::cout << "원하는 텍스트를 작성하시면 출력이 됩니다. \n";
 std::cout << "원하는 텍스트를 작성하시면 출력이 됩니다." 
 << std::endl;

 //cf)c++에서 가능한 개행 방식 - endl
 std::cout << std::endl;
 //==std::cout << "\n";
 

 //C언어에서 사용하는 출력 방식이다.
 printf("hello world!");

 /*
 프로그램이 동작될 때 필요한 데이터들은 메모리에 저장이 된다.
 *메모리: 주 기억 장치
  - 휘발성, 프로그래밍이 종료되면 저장하고 있던 데이터가 사라진다.
  
 *HDD, SSD: 보조 기억 장치
  - 비휘발성, 반영구적으로 저장이 가능.

 용량의 최소 다누이는 bit 이다.
 1byte = 8bit
 1Kbyte = 1024byte
 1Mbyte = 1024Kbyte
 1Gbyte = 1024mbyte
 1Tbyte = 1024Gbyte

 1bit = 0 or 1 둘 중 하나의 값을 저장할 수 있다.
 1byte는 256가지의 값을 표현할 수 있다.
 기본적인 이론들은 외워 둘 것


 C++에서는 데이터를 저장하기 위한 수단으로 변수가 지원된다.

 ***** 반드시 외워 놓을것 *****
 타입 | 메모리 크기 | 표현종류 | 값의 표현범위
 bool | 1byte | 참(1)/거짓(0)| false/true
 * CF)참/거짓은 0이 거짓이 되고, 0이 아닌 모든 수는 참이다.

 char | 1byte | 문자 | -128~127(0을 포함하기 때문에)
 * 문자를 저장할 떄는 일반 숫자로 저장을 하고 출력할 때
 * 아스키 코드표를 참조하여 값에 해당하는 문자를 출력하게 된다.
 
 short | 2byte | 정수 | -32768~32767
 * 예전에 최적화가 중요한 시절에 쓰였던 변수 타입. 요즘은 잘 안 쓴다.
 
 int | 4byte | 정수 | -2,147,483,648~2,147,483,647
 __int64| 8byte | 정수 | 매우 큰 단위. 위 숫자 이상으로 표현해야할 때 사용

 float | 4byte | 부동소수점 | 게임에서는 많이 사용되지 않음.
 double | 8byte | 부동소수점 | 소수점 십 몇 단위의 정밀한 프로그램에서나 필요(증권, 시뮬레이션 등)

 *이외에도 우리가 원하는 변수 타입을 만들어 사용하는 것도 가능하다.
 */


 //TIP)F12키로 코드의 정의로 바로 이동할 수 있다.
 FLT_MIN; //<<F12키 눌러볼것

 std::cout << std::endl << 3.141597f << std::endl;
 //실수 뒤에 f를 붙여주면 float 타입의 실수가 된다.
 //실수 뒤에 아무것도 없다면 double타입의 실수가 된다.
 //소수점이 5자리까지만 표현된다.


 //변수 선언
 //CF)변수 이름은 그 사용목적을 명확하게 표시해놓아야 한다.
 // = : 수학에서는 등호이지만, C++에서는 대입연산자이다.
 //오른쪽의 값을 변수에 넣어준다.
 int playerHP = 100;

 //아래처럼 cout에 변수를 넣어주면 해당 변수에 해당되는 값을 출력해 준다.
 std::cout << playerHP << std::endl;

 return 0;
 }