ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2.1 기본자료형
    C++일기 2021. 5. 3. 11:27

     

     

    제가 빠르게 복기하기 좋게 정리한 글입니다. 파일을 추가하는 세세한 방법과 과정은 마지막에 첨부된 영상으로 확인하시면 좋을 것 같습니다 :) 강의목차의 번호와 같은  목차번호를 사용하고 있으니 참고하세요!

     

     


     

     

     

    2.1 기본자료형 : 자료형마다 데이터 사용량, 사용방식이 조금씩 다르다.

     

    컴퓨터는 기본적으로 전압이 높고 낮음에 따른 0,1 둘밖에 다루지 못한다

    1 bit = 0 or 1

    1 byte = 8 bit 가 된다.

    예를 들어서 

    0 은 1bit이고

    0100 은 4 bit

    01001001은 8 bit = 1 byte가 된다.

     

    아래 그림을 보면 문자와 숫자가 얼마만큼의 메모리를 차지하는지 알 수 있다.

    문자는 개수가 많지 않아 1byte만을 사용한다.

    하지만 정수는 그 수가 매우 많아 4byte를 사용한다.

     

    출처 : 따배씨++ youtube https://www.youtube.com/watch?v=o2buKhNVCbc&list=PLNfg4W25Tapw5Yx4yuExHNybBIUk68aNz&index=23

    #bool 연산자와 삼항연산

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <iostream>
     
    int main()
    {
        bool bValue = false;
     
        std::cout << (bValue ? 1 : 0<< std::endl;
     
        return 0;
    }
    cs

     

    #char 자료형. 내부적으로는 숫자형태로 저장이 됨을 앞에 (int)를 붙여 출력해보면 알 수 있다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <iostream>
     
    int main()
    {
        bool bValue = false;
        char chValue = 'A';
     
        //std::cout << (bValue ? 1 : 0) << std::endl;
        std::cout << chValue << std::endl//A
        std::cout << (int)chValue << std::endl//65
     
        return 0;
    }
    cs

     

    # float, double 자료형 : double은 float의 두배만큼의 자료공간을 필요로한다. 그래서 이름이 더블이다.

    주의:float자료형 뒤에는 f를 붙여야 한다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #include <iostream>
     
    int main()
    {
        bool bValue = false;
        char chValue = 'A';
        float fValue = 3.141592f;
        double dValue = 3.141592;
     
        //std::cout << (bValue ? 1 : 0) << std::endl;
        //std::cout << chValue << std::endl; //A
        //std::cout << (int)chValue << std::endl; //65
        std::cout << fValue << std::endl;
        std::cout << dValue << std::endl;
     
        return 0;
    }
    cs

     

    # auto 자료형(in cpp)

    자료형을 자동으로 파악해 지정한다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #include <iostream>
     
    int main()
    {
        bool bValue = false;
        char chValue = 'A';
        float fValue = 3.141592f;
        double dValue = 3.141592;
     
        //std::cout << (bValue ? 1 : 0) << std::endl;
        //std::cout << chValue << std::endl; //A
        //std::cout << (int)chValue << std::endl; //65
        //std::cout << fValue << std::endl;
        //std::cout << dValue << std::endl;
     
        auto aValue = 3.141592f;
     
        std::cout << aValue << std::endl//3.14159
     
        return 0;
    }
    cs

     

    # sizeof() : 자료형의 메모리size를 알 수 있다.

    앞서 double은 float의 두배의 공간을 차지한다고 했었는데 아래 코드로 알 수 있다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    #include <iostream>
     
    int main()
    {
        bool bValue = false;
        char chValue = 'A';
        float fValue = 3.141592f;
        double dValue = 3.141592;
     
        //std::cout << (bValue ? 1 : 0) << std::endl;
        //std::cout << chValue << std::endl; //A
        //std::cout << (int)chValue << std::endl; //65
        //std::cout << fValue << std::endl;
        //std::cout << dValue << std::endl;
     
        auto aValue = 3.141592;
        auto aValue2 = 3.141592f;
     
        std::cout << sizeof(aValue) << std::endl;//8
        std::cout << sizeof(aValue2) << std::endl;//4
     
        return 0;
    }
    cs

     

    # 초기화 방법 3가지

    첫번째는 흔히 많이 쓰는 초기화 방법.

    두번째와 세번째는 객체지향에서, 직접만든 자료형을 초기화할 때 많이 쓰는 방법이라고 한다.

    (예를 들어, 게임에서 어마어마한 양의 동시접속자 수를 다루려고 할 때, 이 데이터의 자료형은 직접 만들어 사용한다.)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #include <iostream>
     
    int main()
    {
        /*초기화 방법 3가지*/
        
        int a = 123;
     
        //direct initialization
        int b(123);
     
        //uniform initialization
        int c{ 123 };
     
        return 0;
    }
    cs

     

    uniform initialization은 보다 엄격한 초기화 방식이다.

    만약  int b(123.123);을 적고 b를 출력한다면 123이 에러없이 출력될 것이다.

    하지만 int c{ 123.123 };을 적고 출력한다면 그전에 빌드오류가 뜰 것이다.

    때문에 문제가 있다면 보수적으로 알려주는 uniform initialization을 사용하는 것이 좋을 때가 있다고 한다.

     

    # 변수선언, 언제하는게 좋은가

    사용하기 직선에 선언하는 것이 디버깅에도 좋다.

     

     


     

     

    출처)

    홍정모의 따배씨++

    www.youtube.com/playlist?list=PLNfg4W25Tapw5Yx4yuExHNybBIUk68aNz

     

    [따배씨++] 따라하며 배우는 C++ | 모던 c++, c++ 강의, c++ 강좌, c++ 언어, 기초 프로그래밍, c++ 프로그

    [홍정모의 따라하며 배우는 C++ (모던 C++)] https://www.inflearn.com/course/following-c-plus?inst=aa88a07c [홍정모의 따라하며 배우는 C언어] https://www.inflearn.com/course/following-c?i...

    www.youtube.com

     

     

    좋은 강의에 너무나 감사하다.

    이전에는 그냥 무작정 따라썼던 코드들을 한줄한줄 이해하며 공부할 수 있다.

    언젠가 어느 언어든 자신감이 있는 코드마스터가 될 것이다.

     

    데이터가 인간을 대신해 일을 하게하고

    데이터를 제어해 로봇을 제어하고 싶다.

    728x90
    반응형

    댓글 0

Designed by Tistory.