본문 바로가기
IT/C++(CPP)

CPP 초급 강좌 6. C++ 변수의 특징

by 신림83 2020. 10. 7.
반응형

CPP 초급 강좌 6. C++ 변수의 특징

이번에는 변수의 특징, 그리고 c++11 상위 버전에서 가능한 특징 등을 공부해보자.

 

먼저 변수?

 변수(variable)란 데이터(data)를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간을 의미합니다. 

 

기본형 void
문자형 (signed) char 1 byte -128 ~ 127
unsigned char 1 byte 0 ~ 255
wchar_t 2 byte 0 ~ 65,535
정수형 bool 1 byte 0 ~ 1
(signed) short (int) 2 byte -32,768 ~ 32,767
unsigned short (int) 4 byte 0 ~ 65,535
(signed) int 4 byte -2,147,483,648 ~ 2,147,483,647
unsigned int 4 byte 0 ~ 4,294,967,295
(signed) long (int) 4 byte -2,147,483,648 ~ 2,147,483,647
unsigned long (int) 4 byte 0 ~ 4,294,967,295
__int8 1 byte -128 ~ 127
__int16 2 byte -32,768 ~ 32,767
__int32 4 byte -2,147,483,648 ~ 2,147,483,647
__int64 8 byte -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
실수형 float 4 byte 3.4E-38(-3.4*10^38) ~ 3.4E+38(3.4*10^38) (7digits)
(long) double 8 byte 1.79E-308(-1.79*10^308) ~ 1.79E+308(1.79*10^308) (15digits)

cpp 변수의 특징

1. 함수의 중간에 변수를 선언가능

int main()
{
	//int n = 0; 과거, 특정 c컴파일러는 무조건 변수들은 함수의 최 상단에만

	if (true) {}

	int n = 0;
}

 코딩을 시작하신 지 오래지 않은 분들은 이건 당연히 되는 거 아니냐라고 생각하실 수 있지만, 과거 c컴파일러들에서 변수는 무조건 함수의 최 상단에만 존재해야 했다.

 

2. 구조체나 클래스를 만들 때 맴버 초기화 가능

struct point {
	float x = 0.0f; //구조체를 만들때 맴버 초기화 가능
	float y = 0.0f;
};

int main()
{
	point p;
}

 해당 기능은 c++ 11부터 지원했다. 이전에는 생성 이후 초기화해줘야 했다. 생성자에서 하거나 완전 명시적으로 코딩을 해줘야 했다.

 

3. 숫자 입력 시에 2진수, 8진수, 16 진수 등을 입력할 수 있다.

int main()
{
	int n = 0;

	n = 10;		//10진수 표기
	n = 0x10;	//16진수 표기
	n = 010;	//8진수 표기
	n = 0b10;	//2진수 표기
}

 일반적으로 잘 쓸 일은 없어 보이지만 이런 행위들이 가능하다. 2진수 표기법 같은 경우는 c++ 11부터 지원한다.

 

4. 자릿수 표기법

int main()
{
	int n = 0;

	n = 10000000;

	n = 10,000,000; //1번

	n = 10'000'000; //2번

	n = 1000'0'0'0'0; //3번
}

1번과 같은 코드가 우리가 이미 자주 쓰는 표현이라 되면 참 좋겠지만 불가능하다. , 는 이미 다른 곳에 예약어이다.

 

2번과 같이 ' 을 사용해야 한다. 순수 가독성을 위한 코드다 컴파일시에는 모두 제거된다.

 

3번과 같이 꼭 3자리수 표기뿐을 위함이 아닌 자신이 사용하고 싶은 용도로 사용하면 된다.

 

2, 3번도 결과적으로 n = 10000000; 코드로 변경되어 컴파일되는 것이다.

 

해당 기능은 c++11부터 추가된 내용이다.

 

5. C++11에서 추가된 데이터 타입

long long n = 1000;	//64bit 정수

char16_t t1;		//UTF16
char32_t t2;		//UTF32

char8_t t3;		//UTF8 C++20부터 지원

 

공부합시다...ㅠㅠ

반응형

댓글