cpp2

2023. 9. 25. 10:56개발하는중/cpp

728x90
반응형

 

키워드와 식별자

키워드(keyword) ?

c++에서 미리 용도를 정해 놓은 단어

반드시 전해진 용도로만 하용 해야함

ex) #include , using , namespace, return

 

식별자(indentifier)?

여러 가지 대상을 구분하기 위해 만든 이름

-변수, 함수, 클래스 등의 이름

 

규칙

-첫 자는 비숫자 문자를 사용함(c++ 11부터 다국어 문자 포함)

이후의 문자는 비숫자 문자와 숫자를 사용함(특수문자 사용 불가)

길이 제한은 없음

키워드는 식별자로 사용할 수 없음

_문자로 시작하는 이름은 사용하지 않는 것이 좋음

 

적절한 식별자

ex) myname, my_name(snake case), myName(camel case), MyName(pascal case), a3, VALUE, Int, initial_value, 합계(C++ 11이후), $price (마이크로소프트 C++에서)

 

사용할 수 없는 식별자

ex) 7days, my name, my#name, int, initial-value, min:value

 

기본자료형 및 상수와 변수

c++자료형

기본

-정수 char, int, chort, long, bool

-실수 float, double, long double

복합

-배열, struct, class, enum, union, 포인터, 참조

 

정수 자료형(integral types)

고정소수점(fixed-point) 방식의 숫자 표현

overflow 발생하지 않도록 주의 해야함

문자 표현 = char

정수 표현 = int short long long long

signed 또는 unsigend 사용

 

/거짓 표현 = bool : true, false

다국어 표현 = wchar_t, char14_t, char32_t

 

실수자료형

부동소수점(floating-point) 방식의 숫자 표현

float(4byte)

double(8byte)

 

상수표현 리터럴(literal)

정수형 리터럴 표현

숫자를 표현하는 문자와 부호만으로 표현

0~9까지의 숫자

10~15에 해당되는 16진수를 표현하기 위한 문자 a~f & A~F

 

159 = 10진수 int형 상수

0b10011111 = 2진수 int형 상수

0237 = 8진수 int형 상수

0x9f = 16진수 int형 상수

 

접미사를 이용한 정수 리터럴 자료형 지정

123 = int

123u = unsigned int

123L = long

123ul = unsigned long

123ll = long long

 

문자 리터럴 표현

작은 따옴표(‘’)안에 문자 표기

8진수나 16진수 문자 코드로 표기

'A' =문자 ‘A’ (ASCII 코드에 해당되는 정수 65와 동일)

'\101'= 'A'와 동일함 (658진수 표현)

'\x41'= 'A'와 동일함 (6516진수 표현)

 

실수형 리터럴의 표현

소수점이 있거나 10의 거듭제곰을 표현하기 위한 지수 기호인 e가 있으면 실수형 리터럴임

double형 값 1200 = 1200. / 1200.0 / 12e2 / 1.2e+3

float형 값 1200 = 1200.0f / 12e2f

 

변수?

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

변수에는 자료형과 이름이 지정 되어야함

모든 변수는 사용하기 전에 미리 선언 해야함

변수의 초기화

ex1) int total = 0;

ex2) int total(0);

ex3) int total{0};

 

자료형 추론

변수를 초기화할 때 초기화하는 값의 자료형으로 변수의 자료형을 추론함

ex) auto i(10); // int i(10); 동일

 

변수의 사용 영역(scope)

변수가 유효성을 갖는 영역

 

int a; //선언된 이후 프로그램의 전체 영역에서 사용 가능

static int b{10}; //선언된 이후 소속 파일의 전체 영역에서 사용 가능

int f() {

int c{20}, d{30}; //선언된 이후 소속 블록의 전체 영역에서 사용 가능

{

int d{40}; //선언된 이후 소속 블록의 전체 영역에서 사용 가능

int e{50};

······

}

······

}

 

extern int{a}; = 다른 소스파일의 선언된 a

 

const 한정어

변수의 값을 수정할 수 없게함

초기화를 통해서만 값을 정할 수 있음

ex) const double PI {3.141592};

 

#difine PI 3.141592 // 매크로 상수 정의 C언어

 

constexpr한정어

그 값을 컴파일할 때 평d가 한다는 의미

실행 중 평가하는 것에 비해 효율적으로 동작할 수 있게 함

ex)

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함수

모든 인수가 constexpr인 경우 컴파일할 때 값을 구할 수 있게함

ex)constexpr int temp(int n){

return n + 1;

{

 

void t(){

constexpr int a = temp(5); // 컴파일할 때 계산됨

int b = temp(5); // 실행 중 계산

}

 

변수의 유효기간(lifetime)?

변수가 언제 만들어져서 언제 없어지는가를 나타냄

자동 변수

생성 시점 : 함수(블록)가 시작될 때

소멸 시점 : 함수(블록)가 종료될 때

정적 변수

생성 시점 : 프로그램이 시작될 때

소멸 시점 : 프로그램이 종료될 때

연산자

2항연산, 단항연산, 대입연산, 복합대입연산, 관계연산, 논리연산, 비트단위연산, 조건연산

 

자료형의 변환

묵시적 형 변환 개요

두 값 사이의 연산에서는 우선순위가 낮은 자료형의 값이 순위가 높은 자료형의 값과 같은 형으로 변환됨

여러 개의 연산으로 구성된 수식에서 묵시적 형 변환은 연산자 단위로 이루어짐

대입 연산자(=)는 값을 저장할 변수의 자료형으로 묵시적 형변환을 함

오차나 오버플로가 발생할 수 있으므로 주의

 

형변환 연산자

static_cast : 연관된 자료형 간의 형 변환을 처리하며,변환 처리는 컴파일 단계에서 정해짐

dynamic_cast : 기초 클래스와 파생 클래스 간의 포인터 또는 참조 형 변환이 프로그램 실행 중에 일어나도록 지시함

reinterpret_cast : 관련이 없는 자료형 사이의 변환을 처리하는 연산자로, 포인터를 다른 자료형의 포인터나 정수 자료형으로, 또는 그 역으로 변환함

const_cast : const 지정을 일시 해제함

 

C++에서 사용하는 단어는 반드시 정해진 용도로 사용하도록 지정된 키워드와 프로그램 내에서 여러 가지 대상을 구분하기 위해 만드는 식별자가 있다.

 

문자, 정수, /거짓, 실수를 표현하는 기본 자료형과 복합 자료형을 사용할 수 있다.

 

값을 저장하기 위해 사용하는 변수는 사용하기 전에 자료형과 이름을 미리 선언해야 한다.

 

블록 안에 선언된 변수는 소속된 블록에서만 사용할 수 있는 지역변수이다.

 

const 한정어는 변수의 값을 변경할 수 없게 하며, constexpr 한정어는 변수나 함수의 값을 컴파일할 때 평가할 수 있게 할 수 있다.

 

지역변수는 자동 유효기간, 전역변수 및 정적 지역변수는 정적 유효기간을 갖는다.

 

연산자는 산술, 논리, 관계, 비트 단위 논리, 대입 등의 처리를 하는 데 사용된다.

 

서로 다른 자료형이 연산에 사용될 경우 우선순위가 높은 자료형으로, 대입 연산의 경우 값을 저장할 변수의 자료형으로 묵시적 형 변환이 일어난다.

 

형 변환 연산자를 이용하여 명시적으로 자료형을 변환할 수 있다.

728x90

'개발하는중 > cpp' 카테고리의 다른 글

cpp6  (0) 2023.11.04
cpp5  (0) 2023.11.04
cpp4  (1) 2023.11.02
cpp3  (1) 2023.10.21
cpp  (0) 2023.09.25