[C++] 프로그래밍 기초

프로그램의 기본 요소

  • 식별자(identifier)
    • 어떤 대상을 유일하게 구별할 수 있는 이름
    • 프로그램에서 사용되는 변수나 함수, 구조체나 클래스는 모두 고유의 식별자를 가져야 한다.
    • 식별자의 시작은 반드시 문자나 ‘_’

 

  • 키워드(keyword)
    • 특별한 의미가 주어진 식별자
    • 변수나 함수 등의 식별자로 사용할 수 없다.
    • 예. class, bool, case, if/else, inline, goto, auto 등
    • 키워드를 식별자로 사용하지 않는 것이 안전하다.

변수, 상수, 자료형

  • 변수(variable)
    • 어떤 값을 저장하기 위한 메모리 공간
    • 변수는 이름을 가지며 특정한 자료형의 값을 저장할 수 있는 공간을 갖고, 안에는 어떤 값이 들어있다.
    • 변수의 값은 언제든지 변경할 수 있고, 사용 전에 초기화해야 한다.
    • 주소 추출 연산자 &를 적용해 그 변수의 주소를 알 수 있다.

 

  • 상수(constant)
    • 변경될 수 없는 자료
    • 상수는 숫자보다 이름을 붙여 사용하는 것이 좋은데, 이를 기호상수(symbolic constant) 또는 리터럴(literal)이라고 한다.
    • 두 가지 방법으로 상수를 표현할 수 있다.
        #define PI 3.141592 // 전처리기 문장을 사용한 상수 PI 선언
        const double PI = 3.141592  // const 키워드를 사용한 상수 PI 선언
      
        double area = PI*radius*radius  // 리터럴 PI 사용 예시
      
    • 상수는 값을 바꿀 수 없으며 메모리 공간을 차지하지 않으므로 주소가 없다. → 주소 추출 연산자 적용 불가능

 

  • 자료형(data type)
    • 기본 자료형(basic type)과 유도 자료형(derived type)으로 나뉜다.
      • 정수형 - char(1), short(2), int(4), long(4)
      • 실수형 - float(4), double(8)
      • 부울형 - bool(1)
    • 모든 정수 자료형 앞에 unsigned를 붙이면, 동일한 공간으로 0을 포함한 양수만 표현한다. short는 -32768~32767, unsigned short는 0~65535의 범위를 표현한다.
    • char는 주로 단일 문자 표현에 사용된다. 문자형 상수 표현을 위해 작은 따옴표를 사용한다.
      • 예. ‘a’, ‘A’, ‘9’, ‘\n’
    • bool은 true와 false 값을 가지지만 정수 값으로 변경될 수 있다.
    • 실수의 정밀한 표현을 위해 long double형을 사용할 수 있다.
    • 자료형의 크기(바이트)는 sizeof 연산자로 알아낼 수 있다.
    • 정수 자료형에서 오버 플로(overflow)를 주의해야 한다. 저장 가능 범위보다 크거나 작은 값을 저장할 때 발생한다.

 

  • 문자 표현 방법
    • 아스키 코드(ASCII code)
      • 표준적인 8비트 문자 코드로 0~127 숫자를 이용하여 문자를 표현한다.
    • 유니 코드(unicode)
      • 전 세계의 모든 문자를 일관되게 표현하고 다룰 수 있도록 설계한 문자 코드 체계다.
      • 각 글자는 16비트

 

  • 대입 연산자 =
    • 오른쪽 항의 값을 왼쪽 항에 복사한다.

수식과 연산자

  • 산술 연산자
    • 정수형과 정수형의 연산 결과는 정수형, 실수형을 포함한 연산의 결과는 실수형이다.
    • 정수 나눗셈 연산에 주의하자.
      • 6 / 4 == 1
      • 6.0 / 4.0 == 1.5
  • 증감 연산자
    • 피연산자와의 위치에 따라 계산 결과가 달라질 수 있으므로 주의하자.
    • 상수나 일반 수식은 피연산자가 될 수 없다.
        int a = 10, b = 20;
      
        int c = a++;    // 문장을 모두 처리하고 a 값을 증가시킴
        int d = ++b;    // 먼저 b 값을 증가시키고 나머지 문장을 처리함
      
  • 논리 연산자
    • 논리곱(AND) &&
    • 논리합(OR) ||
    • 논리 부정(NOT) !
    • 단락 논리 - 앞의 결과에 따라 전체 결과가 확정되면 뒤쪽 피연산자는 평가하지 않고 바로 결과를 반환한다.
  • 조건 연산자
    • a ? b : c; : a가 참이면 b 반환, 거짓이면 c 반환
    • 조건 연산자를 잘 활용하면 코드가 간결해진다.
  • 비트 논리 연산자
    • 피연산자 정수 값을 비트 단위로 논리 연산을 수행하며, 결과는 새로운 정수 값이다.
        3       // 00000000 00000000 00000000 00000011
        5       // 00000000 00000000 00000000 00000101
        3 & 5   // 00000000 00000000 00000000 00000001
        3 | 5   // 00000000 00000000 00000000 00000111
        3 ^ 5   // 00000000 00000000 00000000 00000110
        ~3      // 11111111 11111111 11111111 11111100
      
  • 비트 이동 연산자
    • 비트 단위로 왼쪽, 오른쪽으로 이동시키는 연산자
    • <<: 왼쪽으로 비트 이동, 비는 오른쪽 비트들을 0으로 채운다.
    • >>: 오른쪽으로 비트 이동, 비는 왼쪽 비트들을 원래 첫 번째 비트 값으로 채운다.
        5       // 00000000 00000000 00000000 00000101
        5>>2    // 00000000 00000000 00000000 00000001
        5<<2    // 00000000 00000000 00000000 00010100
      
  • 주소 추출 연산자
    • &: 객체 또는 변수의 주소를 알아낸다.
  • 역참조 연산자
    • *: 주소 값을 나타내는 피연산자와 함께 사용되는데, 그 주소에 들어있는 값을 반환한다.

마치며

코딩하면서 아리송했던 부분이 정리되는 기분이다. 역시 기본이 가장 중요한 법.. 이제 헷갈리지 말자!


출처 게임으로 배우는 C++

Categories:

Updated:

Leave a comment