언리얼 - C++ 4 : 연산자 개념, 대입, 산술, 증감 연산자

김정환·2025년 3월 15일

Unreal C++

목록 보기
4/37

📘 페이지 정리

  • 연산자 : 연산 명령을 수행하는 모든 명령어
  • 대입 연산자 (=)
  • 산술 연산자 (+, -, *, /, %)
    • / : 나눗셈의 몫을 계산.
    • % : 나눗셈의 나머지를 계산. 피연산자가 정수일 때만 사용 가능.
  • 증감 연산자 (++, --)
    • 값을 한 단계 변화시킨다.
      • ++ : 한 단계 증가시킨다.
      • -- : 한 단계 감소시킨다.
    • 전위, 후위에 따라 계산 순서가 달라진다.
      • ++data (전위) : 모든 연산자보다 먼저 수행한다.
      • data++ (후위) : 모든 연산자가 끝난 다음 수행한다.

1️⃣ 연산자 Operator

연산자 : 연산 명령을 수행시킬 수 있는 모든 명령어.

int a = 4 + 4; // 대입 연산자
  • 연산자에는 우선순위가 존재

+ 명령의 종료 (; 세미콜론)

  • 명령이 끝났다는 표시
  • 구문과 구문을 나누는 것은 ; 단위

1. 대입 연산자 =

  • = : 좌항에 우항의 값을 넣는다.

2. 산술 연산자 + - * / %

사칙연산

  • +, -, *, /, %(모듈러스, 나머지 연산자)

+, -, *

일반적인 사칙 연산과 동일

➕ 번외 : 레지스터 메모리 (임시 공간)

int data = 10 + 10;
data + 20; // 이건 어떻게 되나?
  • 대입연산자 없이 산술이 일어나면 결과는 CPU가 레지스터 메모리라는 곳에 중간결과를 저장함.
  • 별도로 대입 연산이 일어나지 않았기 때문에 레지스터 메모리(임시 공간)의 결과는 언젠가 사라짐.
data = data + 20;
  • 대입 연산이 이루어져야 비로소 메모리에 값이 변경된다.
data += 20;
  • 위의 과정을 간소화한 연산자 방법.

/, %

10f / 3f => 3.3333333...
실수끼리 나눗셈에서 % 연산이 가능할까? 3.3333333...?
어디까지 가능한가?

정수끼리 연산에서는 나머지가 발생. 몫 3, 나머지 1
즉, 연산의 결과가 두개인 것.

몫 연산 (/)

몫을 얻기 위한 것.

  • 실수끼리 나눗셈 int data = 10. / 3.;
    • 결과는 3.33333...이지만 data 변수가 int 형이므로 형변환이 일어남.
      즉, data에는 3이 들어감.
    • 단, 이때 경고가 발생 :
      double에서 int로 변환하면서 데이터가 손실될 수 있습니다.
    • int data = (int)(10. / 3.);
      명시적 형변환을 해주면 위 경고가 사라짐.

나머지 연산 (%)

나머지를 얻기 위한 것.

  • data = 10. % 3.;은 컴파일 오류임.
    • 왼쪽, 오른쪽 피연산자에 대해서 % 연산이 불가능하다고 메시지가 뜸.
    • data = 10 % 3.; 이 또한 마찬가지.
  • 즉, % 연산자는 피연산자가 정수일때 사용할 수 있는 연산자임.

➕ 번외 : 실수형 상수 사용

  • int data_float = 10.232f + 3.0f;
    • 실수를 상수로 표시.
    • 이때 f를 붙여 float 자료형으로 사용.
  • int data_double = 3. + 4. ;
    • 동일하게 실수를 상수로 표시.
    • 단, 이때는 f를 붙이지 않아 자동으로 double 자료형으로 사용.

3. 증감 연산자 ++ --

  • 증가 ++ : 1 증가
  • 감소 -- : 1 감소
int data = 0;
data++; // 1
data++; // 2

int data2 = 0;
data2--; // -1
data2--; // -2;

개념 이해

  • 기본적인 자료형들에게는 1, -1의 변화가 맞음.
  • 포인터를 배우면 단순히 1, -1의 변화가 아님.
    한 단계 변화한다(증가, 감소)라고 생각해야 함.

순서

  • 연산 순서, 과정에 유의해야 함.
data = 0;

++data; --data; // 전위, 전치 
data++; data--; // 후위, 후치
  • 앞이냐 뒤냐에 따라 연산자 우선순위가 바뀜.
    • data++ or data-- 후위의 경우
      • 모든 연산자들이 실행된 뒤에 수행됨.
      • 대입 연산자보다도 늦게 수행됨.
      int a = 10;
      data = a++; // 결과는?
      • data (10), a (11)
      • 대입보다 늦게 수행되기 때문에 data에 a값(10)을 넣고, 그 다음 +1 증감 수행.
    • ++data or --data
      • 모든 연산자들의 실행되기 전에 수행됨.
      • 대입 연산자보다 빨리 수행.
      int a = 10;
      data = ++a;
      • data (11), a (11)
    • 다른 연산자들과 혼합해서 사용할때, 이 지점을 유의해야함
  • 증감 연산자를 수행하면 변수에 대해서 바로 연산결과가 적용됨.
    • a += 1; a에 1을 더하고, 그 값을 대입한다.
    • a++; a에 1을 더하고 바로 적용한다.

➕ 팁.

int data = 0;
data--;
data--;
  • 위와 같이 증감 연산자 하나만 사용할 경우 전위로 사용하는 습관을 들이는 것이 좋음.
    --data; or ++data;
  • 나중에 클래스나 구조체의 오퍼레이터의 함수를 호출할 경우가 있음.
    추후, 연산자 오버로딩을 할 때, 이 습관이 도움이 될 것.
profile
만성피로 개발자

0개의 댓글