2. 변수와 상수2.1 변수📌 변수 Variable변수 란 프로그램에서 일시적으로 데이터를 저장하는 공간을 말한다.
변수는 저장된 값의 변경이 가능하다.
변수는 왜 필요한가?
데이터가 입력되면 어딘가에 저장해야 다음에 사용할 수 있다.
📌 선언변수의 선언은 데이터형 변수명 ; 순으로 한다.
다음은 변수 선언의 예시이다.
#include <iostream>
using namespace std;
int main() {
int myValue;
}
여기서 int 는 데이터형, myValue 는 변수명을 나타낸다.
정수 데이터를 저장할 공간을 myValue 라고 이름을 붙여 메모리에 4 Byte 할당할 예정이라고 컴파일러에 알려준다.
int 이외에도 사용할 수 있는 데이터형은 다양한데 데이터형은 뒤에서 자세히 알아보자.
📌 초기화변수의 초기화는 변수명 = 초기값 ; 순으로 한다.
다음은 변수 초기화의 예시이다.
#include <iostream>
using namespace std;
int main() {
int myValue;
myValue = 1;
}
여기서 myValue 는 변수명, 1 은 초기값을 나타낸다.
📌 선언 & 초기화변수의 선언과 초기화를 동시에 하는 방법도 있다.
데이터형 변수명 = 초기값 ; 순으로 한다.
다음은 변수의 선언과 초기화를 동시에 하는 예시이다.
#include <iostream>
using namespace std;
int main() {
int myValue = 1;
}
여기서 int 는 데이터형, myValue 는 변수명, 1 은 초기값을 나타낸다.
int 이외에도 사용할 수 있는 데이터형은 다양한데 데이터형은 바로 뒤에서 자세히 알아보자.
📌 자료형변수는 Data type 에 따라 구분하여 사용한다.
메모리 크기, 값의 범위가 다양한 데이터형은 적절하게 사용하면 메모리 사용량을 줄일 수 있다.
#include <iostream>
using namespace std;
int main() {
int myValue = 1;
char myValue2 = 'A';
float myValue3 = 3.14;
bool myValue4 = true;
}
다음은 자료형에 따른 메모리 크기와 표현 가능한 값의 범위이다.
| 데이터 구분 | 데이터형 | 메모리 크기 | 최소값 | 최대값 |
|---|---|---|---|---|
| 정수 | Byte | 1 Byte | 0 | 255 |
short | 2 Byte | -32,768 | 32,767 | |
unsigned short | 2 Byte | 0 | 65,535 | |
int | 4 Byte | -2,147,483,648 | 2,147,483,647 | |
unsigned int | 4 Byte | 0 | 4,294,967,295 | |
long | 4 Byte | -2,147,483,648 | 2,147,483,647 | |
unsigned long | 4 Byte | 0 | 4,294,967,295 | |
| 실수 | float | 4 Byte | ||
double | 8 Byte | |||
| 문자 | char | 1 Byte | -128 | 127 |
unsigned char | 1 Byte | 0 | 255 | |
| 논리 | bool | 1 Byte | False 또는 True |
📌 문자열 string문자열은 char 말고도 string 을 사용할 수 있다.
string 을 사용하기 위해서는 반드시 다음의 헤더 파일을 포함해야 한다.
#include <string>
string 의 선언과 초기화하는 방법은 char 데이터형과 동일하다.
string 변수명 = " 초기값 " ; 순으로 한다.
문자열 비교는 == 연산자를 사용한다.
#include <iostream>
#include <string>
using namespace std;
int main() {
string myValue = "Good";
string myValue2 = "Morning";
string result = myValue + " " + myValue2 + "!\n";
cout << result;
return 0;
}

2.2 상수📌 상수 Constant상수 는 저장된 값의 변경이 불가능하다.
→ 상수를 선언할 땐 꼭 선언과 동시에 초기화를 같이 해야한다.
📌 기호 상수 Symbolic Constant예를 들어, 원의 넓이를 구하는 코드를 작성할 때 매번 3.141592를 입력하기는 번거롭다.
그래서 'PI = 3.141592' 를 대입한 다음 코드에서 원주율을 사용할 땐 'PI'를 변수처럼 사용한다.
이때 'PI'를 기호 상수 (symbolic constant) 라고 한다.
기호 상수의 장점은 무엇인가?
기호 상수는 프로그래밍의 편의성과 소스 코드의 가독성을 높이는 역할을 한다.
→ 데이터 수정 시 기호상수가 정의된 곳만 수정하면 된다.
기호 상수의 정의 방법에는 두 가지 방법이 있다.
const 키워드를 사용하는 방법과 #define 전처리기를 사용하는 방법이다.
📌 constconst 를 사용하는 기호 상수는 코드 안에서 어디든 선언할 수 있다.
→ 컴파일러 가 처리한다.
상수의 선언은 const 데이터형 상수명 = 데이터값 ; 순으로 한다.
다음은 상수 초기화의 예시이다.
#include <iostream>
using namespace std;
int main() {
double radius, result;
const double PI = 3.141592;
radius = 2.5;
result = PI * radius * radius;
printf("원의 넓이는 %lf입니다.\n", result);
return 0;
}

📌 #define#define 를 사용하는 기호 상수는 전처리기 부분에 선언한다.
→ 전처리 단계에서 전처리기 가 처리한다.
상수의 선언은 #define 상수명 데이터값 순으로 한다.
다음은 상수 초기화의 예시이다.
#include <iostream>
using namespace std;
#define PI 3.141592
int main() {
double radius, result;
radius = 2.5;
result = PI * radius * radius;
printf("원의 넓이는 %lf입니다.\n", result);
return 0;
}

📌 'const'와 '#define'의 차이점#define PI 3.141592
#define 은 매크로 상수이다.
→ 즉, 전처리기가 단순히 코드 상에 있는 #define 으로 정의된 모든 상수를 치환한다는 의미이다.
→ #define 은 단순히 치환되는 값이기 때문에 변수형을 지정할 필요가 없다.
const double PI = 3.141592;
const는 메모리를 할당받은 변수이다.
→ 컴파일 과정에서 변수를 상수로 인식하게 된다.
const 는 변수이므로 반드시 변수형을 지정해줘야 한다.
→ const 를 사용했을때 코드에서 발생하는 오류를 더 쉽게 감지할 수 있다.
임베디드처럼 메모리를 절약해야 하는 환경에서는 define을 사용하는 것이 좋다.
하지만 일반적으로는 프로그래밍의 편의성과 소스 코드의 가독성을 const 를 사용하는 것이 좋다.
2.3 식별자📌 식별자 Identifier식별자 란 변수, 상수, 함수, 배열 등에 붙이는 이름을 말한다.
식별자는 왜 필요한가?
변수, 상수 등에 각각의 이름을 붙여 다른 것들과 식별하기 위해 사용한다.
📌 식별자 규칙식별자를 만드는 규칙이 있다.
식별자 네이밍 규칙
1.영문 대소문자52개,숫자(0 ~ 9) 10개, 특수기호 (_) 1개만 사용할 수 있다. → 총 63개 사용 가능
2. 첫 글자엔 숫자가 올 수 없다. 반드시영문자나_로 시작되어야 한다.
3.키워드를 사용할 수 없다.
2.4 키워드📌 키워드 Keyword키워드 란 C 언어에서 명령어나 어떤 의미있는 의미로 사용되는 단어를 말한다.
→ 예약어 라고도 한다.
C 언어의 키워드와 C++ 언어의 키워드는 서로 다르다.
📌 C 언어의 키워드C 언어에서 사용하는 키워드는 다음과 같다.
| 키워드 | 키워드 | 키워드 | 키워드 | 키워드 |
|---|---|---|---|---|
| auto | double | int | struct | break |
| else | long | switch | case | enum |
| register | typedef | char | extern | return |
| union | const | float | short | unsigned |
| continue | for | signed | void | default |
| goto | sizeof | volatile | do | static |
| while | if | inline | restrict |
📌 C++ 언어의 키워드C++ 언어에서 사용하는 키워드는 다음과 같다.
| 키워드 | 키워드 | 키워드 | 키워드 | 키워드 |
|---|---|---|---|---|
| auto | double | int | struct | break |
| else | long | switch | case | enum |
| register | typedef | char | extern | return |
| union | const | float | short | unsigned |
| continue | for | signed | void | default |
| goto | sizeof | volatile | do | static |
| while | class | inline | asm | bool |
| catch | if | const_cast | delete | dynamic_cast |
| explicit | export | false | friend | mutable |
| namespace | new | operator | private | protected |
| public | reinterpret_cast | static_cast | template | this |
| throw | true | try | typeid | typename |
| using | virtual | wchar_t |