토큰(Token)과 공백(Space)
C++은 Token과 Space로 구성됩니다. Token은 컴파일러가 해석 할 수 있는 C++의 최소 단위입니다.
- 키워드(Keywords)
- 식별자(Identifiers)
- 숫자, 부울 및 포인터 리터럴(Numeric, Boolean and Pointer Literals)
- 문자열 및 문자 리터럴(String and Character Literals)
- 사용자 정의 리터럴(User-Defined Literals)
- 연산자(Operators)
- 문장 부호(Punctuators)
Space는 Token을 구분하는 단위입니다.
공백(Space), 가로 또는 세로 탭(Horizontal or vertical tabs), 개행(New lines), 폼 피드(Form feeds), 주석(Comments) 등이 Token을 구분하는 단위가 됩니다.
키워드(Keywords)
C++ 키워드는 특별한 의미를 지닌 미리 정의된 식별자의 일종입니다.
키워드는 표준 C++ 키워드와 Microsoft 한정 C++ 키워드 등이 존재하며, 미리 정의된 키워드는 프로그램에서 변수 명 등으로 사용 될 수 없습니다.
대표적인 표준 C++ 키워드는 일상적으로 C++ 개발에 사용되는 키워드와 변수 타입을 의미하는 키워드를 포함합니다.
반면 두 개의 연속된 밑줄(Underline)로 표현되는 키워드는 Microsoft 한정 C++ 키워드입니다.
마찬가지로 변수 타입을 의미하는 키워드 역시 존재합니다.
식별자(Identifiers)
식별자는 C++ 프로그램에서 유의미한 이름을 지칭하기 위한 구분입니다.
예를 들어 변수 이름, 클래스 이름, 열거형 이름, 매크로 이름 등 프로그래머가 작명하는 모든 것이 식별자입니다.
int hello;
int __hello;
int HELLO;
int hello0404;
식별자는 새로 정의된 이름이기 때문에 기존이 미리 정의된 키워드와 중복 될 수 없습니다.
int auto;
int class;
int bool;
또한 특수 문자를 포함하거나 숫자로 시작하는 식별자는 허용되지 않습니다.
int @hello;
int hello#;
int 00hello;
리터럴(Literals)
C++의 상수 역시 하나의 토큰을 구성합니다. 상수는 변수에 할당되는 값으로써 의미를 갖습니다.
int a = 1000;
bool b = true;
float c = 1.23f;
마찬가지로 문자열 역시 문자열 상수로써 리터럴로 표현됩니다.
auto c = "hello world";
리터럴은 변수에 할당됨으로써 의미를 갖기 때문에 단독으로 사용되지 않습니다.
1234;
연산자(Operators)
연산자는 변수의 값을 가공하기 위한 토큰으로 사용됩니다.
예를 들어 두 개의 값을 더하는 + 연산자와 두 개의 값의 차를 구하는 - 연산자, 두 개의 값의 곱을 구하는 * 연산자 등이 있습니다.
연산자는 우선 순위에 따라서 실행 순서가 달라집니다. 대표적으로 + 연산자보다 * 연산자의 우선 순위가 높아 산술 결과에 차이가 발생하는 문제 등에 주의해야합니다.
int a = 10;
int b = 20;
int c = 30;
// 10 + (20 * 30) = 610
std::cout << (a + b * c) << std::endl;
연산자 우선 순위와 관련한 자세한 내용은 C++ operator precedence and associativity table을 참고합니다.
'C++ > C, C++, STL' 카테고리의 다른 글
wcout 또는 wprintf 사용 시 한글 문자가 출력 되지 않는 현상 (0) | 2024.05.20 |
---|---|
Microsoft C++ learn: 주석(Comments) (0) | 2024.05.16 |
헤더(Header) 파일과 소스 파일 분리 (0) | 2024.02.26 |
문자열 및 문자 리터럴 (0) | 2024.02.26 |
정수, 부동 소수점, 부울 및 포인터 리터럴 (0) | 2024.02.22 |