TIL) C++ - 기초(키워드, 식별자 등)

oatraspberry·2023년 10월 13일
post-thumbnail

C++ 언어의 기초

키워드와 식별자

🌼키워드

  • C++ 언어에서 미리 용도를 정해 놓은 단어
  • 반드시 정해진 용도로만 사용해야 한다.
#include <iostream>
using namespace std;
int main() {
	cout << "나의 첫 번째 C++ 프로그램" << endl;
    return 0;
}

🌼식별자

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

    • 변수나 함수, 클래스 등의 이름
  • 식별자를 만드는 규칙

    1. 첫 글자는 영문 대, 소문자와 _를 사용한다.
    2. 이후의 문자는 영문 대, 소문자와 숫자를 사용한다.
    3. 길이의 제한은 없다.
    4. 키워드는 식별자로 사용할 수 없다.
    5. _문자로 시작하는 이름은 사용하지 않는 것이 바람직하다.

기본 자료형 및 변수

🌼C++의 자료형

  • 기본 자료형

    1. 정수 자료형: char, int, short, long, bool, …
    2. 실수 자료형: float, double, long double
  • 복합 자료형

    • 배열, 구조체(struct), 클래스(class), 열거형(enum), 공용체(union)
    • 포인터, 참조

🌼C++의 기본 자료형

  1. 정수 자료형(integral types)

    • 고정소수점(fixed-point) 방식의 숫자 표현
      • 오버플로(overflow)가 발생하지 않도록 주의해야 한다.
        문자(char), 정수(int, short, long, long long), 참/거짓(bool: true(참)/false(거짓)), 다국어(wchart_t, char16_t, char32_t)
  2. 실수 자료형

    • 부동소수점(floating-point) 방식의 숫자 표현
    • float (4byte)
    • double (8byte)

🌼변수

  1. 변수란?
  • 프로그램이 실행되는 동안 기억하고 있어야 하는 값들을 저장하는 메모리 영역
  • 변수에는 자료형과 이름이 지정되어야 한다.
  • 모든 변수에는 사용하기 전에 미리 선언해야 한다.
int korScore, mathScore;
cin >> korScore >> mathScore;
float avrScore = (korScore + mathScore) / 2.0f;
  1. 자료형 추론
  • 변수를 초기화할 때 초기화하는 값의 자료형으로 변수의 자료형을 추론한다.
auto i(10); // int i(10); 과 동일하다.
  1. 변수의 사용 영역(scope)
// 비지역변수
int a; // 선언된 이후 프로그램의 전체 영역에서 사용 가능
static int b{10}; // 선언된 이후 소속 파일의 전체 영역에서 사용 가능
int f() {
	// 지역변수(local variable)
	int c{20}, d{30}; // 선언된 이후 소속 블록의 전체 영역에서 사용 가능
    {
    	// 선언된 이후 소속 블록의 전체 영역에서 사용 가능
    	int d{40};
        int e{50}; 
    }
    

const와 constexpr

🌼const

  • 변수의 값을 수정할 수 없게 한다.
  • 초기화를 통해서만 값을 정할 수 있다.

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

  • 모든 인수가 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); // 실행 중 계산
  ......
}

🌼변수의 유효기간(lifetime)

  • 변수가 언제 만들어져서 언제 없어지는가를 나타낸다.
  1. 자동 변수
    • 생성 시점: 함수(블록)가 시작될 때
    • 소멸 시점: 함수(블록)가 종료될 때
  2. 정적 변수
    • 생성 시점: 프로그램이 시작될 때
    • 소멸 시점: 프로그램이 종료될 때
int x; // 전역변수 - 정적 유효기간
int f() {
	int y{10}; // 지역변수 - 자동 유효기간
    static int z{0}; // 정적 지역변수 - 정적 유효기간
   	...
}
#include <iostream>
using namespace std;
int main( ) {
  const double PI { 3.14159 };
  double radius;
  cout << "원의 반경을 입력하시오 : ";
  cin >> radius;
  double area = radius * radius * PI;
  cout << "원의 면적 = " << area << endl;
  return 0;
}
profile
개발자가 될테야

0개의 댓글