본문 바로가기
C │ C++ │ C#/C++

C++ Chapter 2.1 : 기본 자료형 소개

by Pokaa 2023. 8. 13.
728x90
728x90
SMALL

chapter2. 변수와 기본 자료형

 

character

 

  • char는 정수이기도 하다. ASCII에 대응되어 저장되기 때문에.
    ο char나 bool이나 내부적으로는 정수 Integer로 저장되고 보여질땐 변환
char c = 65; // c를 출력하면 'A'출력
bool b = true; // b를 출력하면 '1' 출력
  •  char  : 최소 1byte 크기의 문자.
  •  char16_t  : char보다 작지 않은 최소 2byte 크기의 문자. ex) 한글
  •  char32_t  : char보다 작지 않은 최소 4byte 크기의 문자.
  •  wchar_t  : 표현할 수 있는 최대 크기의 문자세트. 주로 유니코드 문자에 사용된다.

 

signed integer

 

  • 음수, 0, 양수.
  • unsigned integer와 저장되는 방식이 다르다.
  •  signed char  : char와 같은 사이즈인 최소 1byte 크기의 정수.
  • $($signed$)$  int  : short 보다 작지 않은 최소 2byte 크기의 정수.
    ο 대부분 4byte
  • $($signed$)$  long  $($int$)$ : int보다 작지 않은 최소 4byte 크기의 정수.
  • $($signed)  long long  $($int$)$ : long 보다 작지 않은 최소 8byte 크기의 정수.
    ο C99, C++11 부터 지원

 

unsigned integer

 

  • 0, 양수.
  • signed integer와 저장되는 방식이 다르다.
  •  unsigned char  : char와 같은 사이즈인 최소 1byte 크기의 정수.
  •  unsigned int  : short 보다 작지 않은 최소 2byte 크기의 정수.
    ο 대부분 4byte
  •  unsigned long  $($int$)$ : int보다 작지 않은 최소 4byte 크기의 정수.
  •  unsigned long long  $($int$)$ : long 보다 작지 않은 최소 8byte 크기의 정수.

 

floating-point

 

  • 실수
  • 각각 숫자를 저장되는 방식이 다르다
  •  float  : 4byte
    ο 1.0 f
  •  double  : float보다 정확도가 높다. 8byte
    ο f 안붙이면 double
        ■ float f = 3.14 ;
            ■ 이건 오류다. double형을 더 작은 사이즈인 float에 구겨넣으려고 하는거라서.
            ■ C에선 오류인데 C++에선 오류 아님. 걍 형변환 해줌.
  •  long double  : double보다 정확도가 높다.

 

auto

 

  • 컴파일러가 타입을 알아서 정해준다.
auto f = 3.14f
// f는 float로 컴파일 해줌

 

C++에서 변수를 초기화 하는 방법

 

  1. int a = 123P
    ● 가장 보편적
  2. int a$($123$)$
    ● C++언어
    ● 덜 엄격하다. 형변환을 해준다.
        ο int a$($3.14$)$
            ■ int 에 double을 넣은 꼴
            ■ .14 버리고 3 으로 int 형변환 해준다
  3. int a{123}
    ● C++언어
    ● 더 엄격하다. 형변환을 해주지 않는다.
        ο int a{3.14}
            ■ intdp double을 넣는 꼴
            ■ 강제 캐스팅 안해준다.
            ■ 에러

cf)

int k, l, m = 2;  // k, l은 2로 초기화 되지 않는다. m만 2로 초기화됨

// 보는 사람 입장에서 착각할 수 있으니 다음과 같이 해주어야 한다. 
//초기화 안하는건 뒤에 or 따로따로

int m = 2, k, l;

int k, l;
int m = 2;
728x90
300x250
LIST