저번 시간에...
전처리기
주석 제거, include 처리, 매크로 확인. 한마디로 필요한 것 넣고 필요 없는 것 제거
컴파일러
어셈블리어로 번역
어셈블러
기계어로 번역
링커
마지막에 하나로 묶어 exe 파일 생성. 컴파일 과정에서 링커가 중요하다.
매크로
위 사진의 define은 정의하다 라는 뜻으로, 앞으로 MAX를 30으로 정의하겠다는 것이 된다.
#if ~ #endif
저번에 설명 했듯이 int main()은 코드의 진입점을 나타내고 있다.
하지만 int main()이 두 번 선언되어 있다면 오류가 날 텐데, 위 사진에서 #if ~ #endif 가 그 오류를 막아주고 있다.
자세히 보면 #if 뒤에 0 과 1이 있을 텐데, 0이 있는 곳의 내용은 출력대상에서 제외시키고,
1이 있는 곳의 내용이 출력대상이 되기 때문에 오류가 나지 않는다.
따라서 출력하면 "Bye World!"만 출력될 것이다.
using namespace std;
저번과는 다르게 cout을 사용할 때, 앞에 std :: cout을 사용하지 않는데, 위에서 미리 namespace를 선언했기 때문이다.
따라서 앞으로는 번거롭게 std :: cin 식으로 코딩하지 않아도 된다.
변수
변수란, 수학에서는 무엇이 들어갈지 모르는 미지수를 말하지만, 프로그래밍에서는 데이터를 저장할 수 있는 공간을 말한다. 쉽게 말하자면 음식(데이터)을 담을 수 있는 그릇(변수)라고 생각하면 편하다.
그리고 변수가 저장되는 곳이 메모리(RAM)이다.
보통 변수에 메모리를 할당한다고 말하는데, 할당해줄 때의 메모리 단위는 bit < byte < KB < MB < GB < TB 순으로 있다.
1byte는 8bit 와 같은 메모리라는 것을 알아두는 것도 나중에 좋다.
그리고 우리는 변수가 저장된 메모리에 찾아가기 위해서는 메모리 주소를 알아야 하는데, 이 메모리 주소는 byte 단위로
표현하고 있다. 우리가 변수를 사용하기 위해선 선언 - 정의 - 호출의 순서를 거치게 된다.
상수(리터럴)
변수와 반대되는 느낌의 정의로 절대 변하지 않은 값을 말한다.
예를 들어 d = 3;은 변수 d에 3의 값을 저장한다는 뜻이다. 하지만 3 = d;는 불가능하다.
3이라는 숫자를 d로 대체할 수 없기 때문이다. 말 그대로 대체 불가능한 것을 말한다.
- 리터럴 상수 : 1, 2, 3, 4... 등
- 리터럴 문자 : a, b, c, d... 등
C++ 자료형(type)
위 사진처럼 여러 가지 자료형이 있다. 앞서 말했듯이 크기는 byte단위로 셀 수 있고, 범위는 해당하는 자료형이 받을 수 있는 크기를 의미한다. C 자료형을 알고 있다면 더욱 쉽게 접근할 수 있을 것이다.
자료형에도 정수형, 실수형, 문자형, 논리형의 종류가 존재한다.
정수형
int : 양수, 음수, 0을 포함한 수를 나타낼 수 있다. (4byte)
short : 양수, 음수, 0을 포함한 수를 나타낼 수 있지만 int보다 적은 크기 (2byte)
long : 양수, 음수, 0을 포함한 수를 나타낼 수 있다. (4byte)
long long : 양수, 음수, 0을 포함한 수를 나타낼 수 있고, int와 long보다 훨씬 더 큰 크기 (8byte)
선언 방식 : int (자료형) a (callname) ;
정의 방식 : a = 10;
호출 방식 : cout << a << endl;
*endl : endline의 줄임말. \n과 같은 역할로 C++에서 사용함
실수형
float : 소수점 단위 표현이 가능하며, 근삿값을 나타내 준다. (4byte)
선언 방식 : float (자료형) b (callname) ;
정의 방식 : b = 3.14f;
호출 방식: cout << b << endl;
* 만약 정수형 int에 실수형 float의 값을 넣고 출력할 시, 뒤의 소수점은 생략이 된다.
문자형
char : 간단한 문자들을 나타낼 수 있다.
선언 방식 : char (자료형) c (callname) ;
정의방식 : c = 'a';
논리형
bool : 1 아니면 0의 값을 통해 true와 false를 나타낼 수 있다.
* 1은 true, 0은 false를 나타내며 1 이외의 다른 수들을 넣어도 true가 출력됨
C++ 연산자
위 사진은 연산자의 종류이며 마찬가지로 C언어를 배웠다면 쉽게 이해할 수 있을 것이다.
= 도 대입 연산자라고 부르며 연산자 중 하나이다.
연산자에는 우선순위가 존재한다. 우리가 수학을 배울 때, 곱셈과 덧셈이 있으면 곱셈을 먼저 하는 것과 같은 개념이다.
밑의 사진을 보면 우선순위에 대해 말하고 있다.
예를 들어 a = 3 + 4; 는 a에 7의 값을 넣어준다는 뜻이다.
하지만 cout << a = 3 + 4 << endl; 은 연산자 우선순위 오류가 발생한다.
위 사진에 따라 확인해보면 a = 7까지 처리되지만, 대입 연산자의 우선순위가 제일 낮기 때문에 오류가 생기게 된다.
따라서 cout << (a = 3 + 4) << endl;처럼 괄호를 넣어준다면 해결된다.
마지막으로 저번에 빌드 후 바로 콘솔 창이 종료되는 것을 막기 위해 int exit; cin >> exit; 의 코드를 추가해주었었다.
이는 바로 변수 입력 대기상태를 만들어 바로 종료가 되는 것을 막기 위해서였다는 것을 알 수 있었다.
'C++' 카테고리의 다른 글
C++ 배우기 6(이중for문, 스왑, 셔플) (0) | 2022.10.18 |
---|---|
C++ 배우기 5(랜덤함수, 배열, for문) (2) | 2022.10.18 |
C++ 배우기 4(반복문 / 논리연산자 / 증감연산자) (0) | 2022.10.13 |
C++ 배우기 3(비교 연산자, if문) (0) | 2022.10.12 |
C++ 배우기 1(단축키와 Hello World!) (2) | 2022.10.08 |