본문 바로가기

IT/개발공부

C++ 언어 기초(1) (키워드, 식별자, 자료형, 상수, 변수, 연산자)

반응형

 

 

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형 

 

 

변수란?

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

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

(사용하기 전에 미리 선언)

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++ 프로그래밍 방송통신대학교

 

 

반응형