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
전처리기를 사용하는 방법이다.
📌 const
const
를 사용하는 기호 상수는 코드 안에서 어디든 선언할 수 있다.
→ 컴파일러
가 처리한다.
상수의 선언은 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 |