본문 바로가기
프로그래밍언어/C++

[C++] C++ 언어의 기초 (1) - 기본 자료형, 연산자

by qkzkdo 2023. 8. 23.
728x90

식별자

프로그램을 만들 때 여러 가지 대상을 구분하기 위해 이름을 만들 필요가 있다. 이러한 이름을 식별자(identifier)라고 한다. 변수나 함수, 클래스 등의 이름이 식별자에 해당한다.

 

 

기본 자료형

유형 자료형 기억공간
(byte)
정수형 char 1
unsigned char 1
short 2
unsigned short 2
int 4
unsigned int 4
long 4
unsigned long 4
long long 8
unsigned long long 8
wchar_t 2/4
bool 1
실수형 float 4
double 8
long double 8

정수형 자료형 이름 앞에 unsigned라는 키워드를 사용하면 음수를 제외한 정수를 표현할 수 있게 된다.

양·음을 모두 표현할 수 있는 부호가 있는 정수형 자료형은 signed라는 키워드가 생략된 것이다.

 

 

상수의 표현

기본 자료형의 값을  직접 표현한 것을 리터럴(literal)이라고 한다. 리터럴은 그 값을 프로그램에서 바꿀 수 없으므로 상수(constant)에 해당된다.

 

변수

변수(variable)는 프로그램이 실행되는 동안 기억하고 있어야 하는 값들을 저장하는 메모리 영역이다.

 

변수 초기화 문장의 예

int a = 10;
int b(20);
int c{30};
int d = 1.5; //d의 값이 1로 초기화됨
int e(1.5}; //오류 - 축소 변환이 필요함(C++11)

 

자료형 추론

자료형 추론은 auto라는 키워드를 사용한다

auto i{10}; //int i{10};과 동일함

 

const 한정어

변수에 값이 항상 고정된 값을 갖게 하려면 변수를 선언할 때 const라는 키워드를 사용한다.

const double PI {3.14159}; //원주율 정의

이와 같이 자료형에 대해 특성을 부여하는 키워드를 자료형 한정어(type qualifier)라고 부른다.

 

constexpr 한정어

constexpr은 그 값을 컴파일할 때 평가한다는 의미이고, 이것은 실행 중 값을 평가하는 것에 비해 효율적으로 동작할 수 있게 한다.

int a;
std::cin >> a;
const int b = 20;
const int C1 = a; //cin을 통해 입력된 a의 값으로 초기화
constexpr int C2 = a + 10; //오류: 컴파일 시에 a의 값을 알 수 없음
constexpr int C3 = b + 100; //b+100을 컴파일 시에 계산할 수 있음
constexpr int C4 = C1 * 2; //오류: 컴파일 시에 C1의 값을 알 수 없음

 

함수도 constexpr로 선언할 수 있다.

 

 

연산자

산술 연산자

사칙연산자 : +, -, *, / 연산

나머지 연산: % 연산

증, 감 연산 : ++, -- 연산

 

논리 연산자

논리합(||), 논리곱(&&), 부정(!) 연산

 

관계 연산자

크다(>), 작다(<), 크거나 같다(>=), 작거나 같다(<=), 같다(==), 같지 않다(!=)

 

대입 연산자(=)

 

조건 연산자( ? : )

 

기타 연산자

연산자 사용 예 의미
& int *p = &a; &a는 a의 주소를 구한다.
* a = *p; *p는 포인터 p가 가리키는 곳을 나타낸다.
new int * p = new int; 저장공간을 동적 할당한다.
delete delete p; 포인터  p가 가리키는 동적 할당 메모리를 반환한다.
-> pObj->a 구조체나 객체 포인터를 이용하여 멤버를 선택한다.
:: ::a 전역 명칭

 

 

명시적 형 변환

형 변환 연산자

  • static_cast : 실행 중 형 검사를 하지 않으며, 컴파일 할 때 지정된 자료형으로 변환을 한다.
  • dynamic_cast : 기초 클래스와 파생 클래스 간의 포인터 또는 참조의 형 변환이 프로그램이 실행되는 동안 일어나도록 지시하는 연산자이다.
  • reinterpret_cast : 주어진 값의 내용과는 관계없이 bit 수준에서 형 변환을 한다. static_cast를 통해 할 수 없는 변환도 호영할 수 있도록 하며, 이러한 변환이 불가피한 특수한 상황에서 활용한다.
  • const_cast : const로 선언된 객체의 const 한정어를 해제한다.
형변환_연산자<자료형>(수식)

 

 

 

출처 : 전중남·이병래. 「C++프로그래밍」. 한국방송통신대학교출판문화원. 2020

728x90