본문 바로가기

C++/C, C++, STL

Microsoft C++ learn: 토큰(Tokens) 및 문자 집합(Characters sets)

이 문서의 내용

    토큰(Token)과 공백(Space)

    C++은 TokenSpace로 구성됩니다. Token은 컴파일러가 해석 할 수 있는 C++의 최소 단위입니다.

    더보기

    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을 참고합니다.