SW/C++

C++11 : 변수와 자료형에 대해 알아볼까요?

얇은생각 2018. 12. 18. 07:30
반응형

변수이름을 지을 때 일반적으로 지켜야 할 사항

1. 의미를 파악할 수 있도록 식별할 수 있는 단어로 구성

2. 일반적으로 소문자로 구성클래스 이름은 일반적으로 대문자로 시작

3. 숫자는 변수 이름의 첫 글자로 사용할 수 없음

4. 여러 단어를 조합할 때는 일관성 있는 규칙을 적용할 것

5. 예약어는 변수 이름으로 사용할 수 없음


c++ 기본자료형

C++11 표준 문서에 정리된 기본 자료형은 아래 표와 같습니다.

데이터를 담을 수 있는 최소 크기를 비트 단위로 명시하고 있는데요.

실제 크기는 운영체제나 cpu에 따라 달라질 수 있습니다.

최대 크기는 달라질 수 있으나 최소 크기는 준수할 수 있도록 컴파일러에게 기준을 제시합니다.


자료형 

 의미 

 최소크기 

 short 

 짧은 정수 

 16bit

 int 

 정수 

 16bit

long

긴 정수  

32bit 

long long

긴 정수

64bit 

float  

단정도 부동소수점

32bit

double

 배정도 부동소수점

 64b

 long double

 특수정도 부동소수점

 64bit

 bool 

 논리 

 true, false

 char 

 문자 

 8bit

 wchar_t 

 확장 문자 

 16bit

 char16_t 

 유니코드 문자 

 16bit

 char32_t 

 유니코드 문자

  32bit 



signed와 unsigned

기본 자료형 중 bool 형과 long double형을 제외하고 모두 signed와 unsigned 형태를 가질 수 있습니다.

디폴트는 signed이며 음수, 양수 모두를 범위로 가질 수 있습니다.

unsigned 키워드를 앞에 붙이면 저장 범위는 유지한 채 양수만 가질 수 있습니다.

표현 크기는 같으나 양수 범위로 이동한다는 것을 기억합시다.



자료형 별칭 만들기

변수의 이름을 잘 지어야 읽기 좋은 코드를 만들 수 있습니다.

같은 의미로 기본 자료형에 의미 있는 별칭(alias)을 부여할 수 있습니다.

자료형에 별칭을 부여하는 방법은 두가지가 있습니다.


typedef [기존 자료형] [별칭]

typedef double salary;


using [별칭] = [기존 자료형] 

using salary = double;


아무래도 salary라는 별칭이 가독성을 높일 수 있겠죠?

그리고 변수를 선언하기 전에 정의만 보고도 앞으로 salary와 관련된 변수를 선언한다는 것을 알 수 있습니다.

그렇다면 관련 예제를 보겠습니다.


using namespace std;
int main()
{
    using salary = double// double형에 salary라는 별칭 선언
    using point = int// int형에 point라는 별칭 선언
 
    // sangwon 변수를 salary형으로 선언하고 값 할당
    salary sangwon = 125.20;
 
    // peter 변수를 salary형으로 선언하고 값 할당
    salary peter = 100.12;
}
cs



auto형 변수 : 초깃값 필요

지금까지는 변수를 선언할 때 자료형을 미리 지정해야 했습니다.

c++11 새로운 표준 부터는 컴파일러가 자료형을 자동으로 결정하는 auto라는 키워드를 제공해줍니다.

하지만 컴파일러가 초깃값을 보고 자료형을 결정합니다.

따라서 반드시 변수 초기화 코드가 있어야 합니다.


auto 변수명 = 초깃값(상수, 함수, 변수 모두 가능);


auto형은 C++11에서 가장 많이 활용하는 기능 중 하나입니다.

다음 예제를 보겠습니다.


int main()
{
    int n = 2;
    float f = 2.3;
    auto answer1 = n;
    auto answer2 = f;
    auto answer3 = n + f;
}
cs


auto형은 클래스, 템플릿, 라이브러리 등에서 유용하게 활용됩니다.

auto형을 활용하면 코드를 간결하고 편리하게 작성할 수 있습니다.



decltype형 : 초깃값 불필요

auto형은 컴파일러가 알아서 자료형을 결정해줍니다. 그러나 초깃값을 설정해야 합니다.

만일 초깃값도 설정하기 싫다면 declytype형을 사용합니다. 

decltype 형으로 변수를 선언하는 방법은 아래와 같습니다.


decltype( 함수f() ) [선언할 변수];

decltype( 변수 ) [선언할 변수];

deceltype( 변수) ) [선언할 변수];


1은 f() 함수의 반환형으로 선언할 변수의 자료형을 결정합니다.

2는 이미 선언된 변수의 자료형으로 선언할 변수의 자료형을 결정합니다.

3은 2와 같으나 이미 선언된 변수를 사용할 때  레퍼런스 변수만을 사용할 수 있습니다.


int f()
{
    return 20 + 30;
}
 
int main()
{
    double d = 1.231;
    decltype(f()) answer1; // ①
    decltype(d) answer2; // ②
    decltype((d) answer3 = answer2; // ③
}
cs


자료형이

1은 int형

2는 double형

3은 double&형으로 결정됩니다.

반응형