본문 바로가기
■ Programming /C++

[C++] 4-1. [데이터 타입] C++에서 제공하는 여러가지 데이터 타입들

by Popbox 2017. 3. 20.
반응형

[C++] 4-1. [데이터 타입] C++에서 제공하는 여러가지 데이터 타입들

[뇌를 자극하는 C++ , 저.이현창]책을 기준으로 작성하였습니다

 

 

C++에서 제공하는 여러가지 데이터 타입들

 

 

데이터 타입이란?

변수가 보관할 수 있는 값의 종류를 의미합니다.

앞에서는 int 형만 다뤘기 때문에.... 이제 다양한 타입을 설명해 드리겠습니다.

 

 

  1.  C++에서 제공하는 기본적인 타입

 

 

 

  2.  데이터 타입별 메모리 크기 및 범위

 

 

 

  3. 정수형 타입 ( int , short , long )

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int main(void)
{
    /*정수형 데이터 타입*/
 
    //기본 정수형 int
    int num1 = 0;
 
    //짧은 정수형 short
    //같은 의미 입니다.
    short int num2 = 0;
    short       num3 = 0;
 
    //긴 정수형 long
    long int num4 = 0;
    long      num5 = 0;
 
    return 0;
}
cs

 

 

-> 이렇게 정수형을 담는 형태가 여러가지인 이유!?!?


1]일단 각 형마다 메모리 할당 값이 다릅니다.

일반적으로 int 형은 32bit 운영체제 기준으로 4btye(32bit)의 메모리를 가집니다.

또, 정수형에서 컴퓨터가 가장 빠르게 연산하는 데이터 형이 int형입니다.

(또한, 정수형의 기본 타입은 int형입니다.)

(이유는 복잡해서..나중에...)


2] 변수가 차지하는 공간을 절약하기 위한 것

최대 값을 100을 가질 변수를 만들었는대....  long 타입에 넣으면

메모리 낭비 아니겠습니까!??

즉 1.5리터 페트병에 눈물 한방울 넣어 놓고 들고다니는???  의미입니다.

 

 

  4. 실수형 타입 ( float , double , long double )

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
int main(void)
{
    /*실수형 데이터 타입*/
    //실수
    float  num1 = 0.0f;
 
 
    //자세한 실수
    double num2 = 0.0;
    
    //제일 자세한 실수
    //하지만 8byte 똑같아요
    long double num3 = 0.0;
 
    return 0;
}
cs

 

 

-> 실수형 타입은 정밀도에 따라서 구분됩니다.

정수의 경우에는 길이라는 표현을 쓰지만 실수의 경우에는 정밀도라는 표현을 사용합니다.

(정밀하다는 뜻은 소숫점 자리를 많이 가진다는 뜻으로 해석하시면 됩니다)

 

 

  5. 문자형 타입 ( char )

 

기본으로 제공하는 타입중에 문자를 저장하기 위한 타입 ' char ' 가 있습니다.

char 형은 문자 1개를 저장할 수 있어요~ (-127 ~ 127) 의 상수값 을 저장 가능합니다.

(컴퓨터는 문자도 숫자로 읽고 표현하기 때문)

(문자를 숫자로 표현하는 코드표가 존재합니다." 아스키 코드표 " 를 참고하세요 )


*문자열은 어떻게 저장할까.???

추후 배우는 배열이라는 것을 이용합니다.

 

1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
 
int main(void)
{
    /*형 데이터 타입*/
    //문자 하나를 저장하는 데이터 형
    char ch = 'A';
 
    return 0;
}
cs

 

 

 

  6. 논리형 데이터 ( bool )

 

-> bool 데이터 값은 true(참) false(거짓)의 값만을 가질 수 있는 변수입니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
 
int main(void)
{
    /*논리형 데이터 타입*/
    //참과 거짓을 가지는 변수
    bool open = false;
    bool open2 = 0;
 
    bool close = true;
    bool close2 = 1;
    return 0;
}
cs

 

 

-> bool형 변수의 값이 1이아닌 모든 값은 false로 인식하며

1은 true와 같은 뜻이다.


*영어를 제외한 각 나라의 언어를 표시하기 위한 유니코드*

-> 초기에는 char만 존재하였지만, 최근 여러나라의 언어를 담기에 char형은 너무 작아

-> wchar_t라는 형이 생겼습니다.

 

 

  7. unsigned 와 signed

 

데이터형 표를 보면 unsigned 와  signed 을 볼 수 있습니다.

단어를 그대로 해석하면 "부호가없는 , 부호가있는" 입니다.

즉!!

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
int main(void)
{
    //signed는 생략이 가능합니다.
    //부호가 있는
    signed int num1 = -5;
 
    //unsigned 키워드를 붙이면 부호비트가 없어지고
    //값의 범위가 높아지기 때문에 양수만 사용해야 합니다.
    //이렇게 입력하고 출력을 하면??
    unsigned int num2 = -5;
 
    cout << "num1 = " << num1 << endl;
    cout << "num2 = " << num2 << endl;
 
    return 0;
}
cs

 

 

 

unsigned int num2 = -5; 의 결과는 쓰레기 값이 나온다.

->음수의 보관 자체가 불가능 합니다

->부호비트가 없기 때문

 

 

 

 


 

 감사합니다. 공감 한번 부탁드려요.

[ 다음 장 ]

[ C++ ] 4-2 . 데이터들의 크기를 알려주는 sizeof 연산자 : http://popbox.tistory.com/30 


반응형

댓글