1. 키워드와 식별자
키워드 란?
C++ 언어에서 미리 용도를 정해놓은 단어.
(반드신 정해진 용도로만 사용해야 함)
예)
#include <iostream>
using namespace std;
int main(){
cout << "hello" << end1;
return 0;
}
여기서 usin, namespace, return이 키워드 이다.
식별자 란?
여러 가지 대상을 구분하기 위해 만든 이름
(번수, 함수, 클래스 등의 이름)
식별자를 만드는 규칙
- 첫 자는 비 숫자 문자를 사용 (C++ 부터 다국어 문자 포함)
- 이후의 문자는 미 숫자 문자와 숫자 사용 가능 ('_' 이외에 특수문자 사용 불가)
- 길이 제한 X
- 키워드는 식별자로 사용 X
사용할 수 없는 식별자 예
- 4days
- int
- min;value
- 등등
2. 기본 자료형 및 상수와 변수
기본 자료형 | 정수 자료형 | char, int, short, long, bool ... |
실수 자료형 | float, double, long ... | |
복합 자료형 | 배열, 구조체, 클래스, 열거형, 공용체, 포인터, 참조 |
정수 자료형
- 고정소수점 방식의 숫자 표현이다. (오버플로가 발생하지 않도록 주의해야 함) (소수아니고 정수라고 생각하면 됨)
- char : 문자를 표현하는 자료형 (1byte 문자) (부호가 있을 수 있음)
- int, short, long, long long : 정수를 표현하는 자료 (부호가 있을 수 있음)
- bool : true(참) 또는 false(거짓)을 포현하는 자료형
- wchar_t, char16_t, char32_t : 다국어 표현을 위한 자료형
실수 자료형
- 부동소수점 방식의 숫자 표현이다. (소수점 위치가 움직일 수 있는 것) (정수가 아닌 소수라고 생각하면 됨)
- float(4byte) : 부호 1비트, 지수부 8비트, 가수부 23비트로 구성됨
- double(8byte) : 부호 1비트, 지수부 11비트, 가수부 52비트로 구성됨
리터럴
- 정수형 리터럴의 표현 (숫자를 표현하는 문자와 부호만으로 표현됨)
- 숫자를 표현하는 문자
- '0'~'9'까지의 숫자
- 10 ~ 15에 해당되는 16진수를 표현하기 위한 문자 'a'~'f'와 'A'~'F'
- 접두사를 이용한 진법의 표현
- 159 -> 10진수 int형 상수
- 0b1001111 -> 2진수 int형 상수
- 0237 -> 8진수 int형 상수
- 0x9f 16진수 int형 상
- 접미사를 이용한 정수 리터럴의 자료형 지정
- 123 -> int형
- 123u -> 부호없는 int형
- 123L -> long형
- 123ul -> 부호없는 long 형
- 123ll -> long long
- 문자 리터럴의 표현
- 작은 따옴표('')안에문자를 표기하는 방법
- 8진수나 16진수 문자 코드로 표기하는 방법
- 'A' -> 문자 A (ASCII 코드 65와 동일)
- '\101' -> 'A'와 동일 (65의 8진수 표현)
- '\x41' -> 'A'와 동일 (65의 16진수 표현)
- 실수형 리터럴의 표현
- 소수점이 있거나 10의 거듭제곱을 표현하기 위한 지수 기호인 'e'가 있으면 실수형 리터털
- 1200.0 -> double형 값
- 1200.0f -> float형
- 소수점이 있거나 10의 거듭제곱을 표현하기 위한 지수 기호인 'e'가 있으면 실수형 리터털
- 숫자를 표현하는 문자
변수란?
프로그램이 실행되는 동안 기억하고 있어야 하는 값들을 저장하는 메모리 영역
(변수에는 자료형과 이름이 지정되어야 함)
(사용하기 전에 미리 선언)
int value;
자료형 추론
: 변수를 초기화할 때 초기화하는 값의 자료형으로 변수의 자료형을 추론함
auto i(10);
= int i(10);
변수 초기화
형식 1. int total = 0;
형식 2. int total(0);
형식 3. int total{0};
변수 사용 예제
int a; // 비지역변수 (선언된 이후 프로그램의 전체 영역에서 사용 가능
static int b{10}; // 선언된 이후 소속 파일의 전체 영역에서 사용 가능
int f(){
int c{20}, d{30}; // 지역변수 (선언된 이후 소속 블록의 전체영역에서 사용 가능)
{
int d{40}; //선언된 이후 소속 블록의 전체영역에서 사용 가능
int e{50};
...
}
...
}
const 한정어
: 변수의 값을 수정할 수 없음 (초기화할 때만 값 정할 수 있음)
const douvle PI{3,14159}; -> 이제 값 변경 불가능
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 함수
: 모든 인수가 constexpr인 경우 컴파일할 때 값을 구할 수 있게 함
예)
constexpr int fac(int n){
return n > 1 ? n * fac(n-1) : 1;
}
void f(int x){
constexpr int a = fac(4); //컴파일할 때 계산
int b = fac(x); //실행 중 계산
...
}
3. 연산자
산술 연산자
- 2항 연산자
- 사칙 연산자 : +, -, *, /
- 나머지 연산자 : %
- 단항 연산자
- 증, 감 연산자 : ++, --
- 부호 연산자 : +, -
- 대입 연산자
- =
- 복합 대입 연산자
- 이항 연산자와 대입 연산자를 결합 : +=, -=, *=, /=, &=, <<=, >>= 등
- 관계 연산자
- >, <, >=, <=, ==, !=
- 논리 연산자
- 논리합 ||, 논리곱 &&, 부정 !
- 비트 단위 논리 연산자
- 논리 합 |, 논리 곱 &, 배타적 논리 합 ^, 부정 ~
- 비트 이동 연산자
- 좌측 이동 (<<), 우측 이동 (>>)
- 3항 연산자
- 조건 ? 값1 : 값2 (조건이 true이면 값1, false 이면 값2)
4. 자료형의 변환
무기적 형 병환
- 두 값 사이의 연산에서는 우선순위가 낮은 자료형의 값이 순위가 높은 자료형의 값과 같은 형으로 반환됨
- 여러 개의 연산으로 구성된 수식에서 묵시적 형 변환은 연산자 단위로 이뤄짐
- 대입 연산자(=)는 값을 지정할 변수의 자료형으로 묵시적 형 변환을 함
- 오차나 오버플로가 발생할 수 있으므로 주의해야
예)
intVar = doubleVar + intVar * floatVar;
//int가 float으로 바뀌고 float형이 double로 바뀐다. -> 결과적으로 double이 된다는 뜻
형 변환 연산자
- static_cast : 연관된 자료형 간의 형 변환을 처리하며, 변환 처리는 컴파일 단계에서 정해진다.
- dynamic_cast : 기초 클래스와 파생 클래스 간의 포인터 또는 참조 형 변환이 프로그램 실행 중에 일어나도록 지시한다.
- reinterpret_cast : 관련이 없는 자료형 사이의 변환을 처리하는 연산자로, 포인터를 다른 자료형의 포인터나 정수 자료형으로, 또는 그 역으로 변환한다.
- const_cast : const 지정을 일시 해제한다.
형식
형변환연산자<자료형>(수식)
static_cast<int>(n/10.0)
[참고 자료]
C++ 프로그래밍 방송통신대학교
'IT > 개발공부' 카테고리의 다른 글
Spring 처음부터 공부해보기 - 1 (프로젝트 생성, Bean, 어노테이션, Spring Container, Loose Coupling) (0) | 2023.06.15 |
---|---|
C++ 언어 기초 (2) (흐름제어, 구조체, 클래스, 배열, 포인터, 메모리 할당, 참조) (0) | 2023.06.15 |
C++ 언어의 개요 (처음 C++ 배우기!) (0) | 2023.06.13 |
java stream에 대해 알아보자 (0) | 2023.06.12 |
Java 패키지, 예외처리 (0) | 2023.06.08 |