
더하기, 빼기 연산자(+, -)
private void Start()
{
Debug.Log(5 + 1);
Debug.Log(5 - 1);
// [출력]
// 6
// 4
}더하기(+)와 빼기(-) 연산자는 연산자 기준 왼쪽의 피연산자에서 오른쪽의 피연산자를 더하거나 뺍니다.
후위증감연산자(++, –)
private void Start()
{
int i = 0;
Debug.Log(i);
Debug.Log(i++);
Debug.Log(i);
// [출력]
// 0
// 0
// 1
}연산자(++, –)가 연산 대상(i) 뒤에 붙을 시 ‘후위증감연산자‘ 입니다.
두 번째 i를 출력한 시점(i++)에는 i가 0이고 이후에 ++연산을 진행하여 다음 출력 시 1이 출력됩니다.
전위증감연산자(++, –)
private void Start()
{
int i = 0;
Debug.Log(i);
Debug.Log(++i);
Debug.Log(i);
// [출력]
// 0
// 1
// 1
}연산자(++, –)가 연산 대상(i) 앞에 붙을 시 ‘전위증감연산자‘ 입니다.
두 번째 i를 출력한 시점에는 이미++연산을 진행한 후이기 때문에 1을 출력하게 됩니다.
단항연산자(+, -)
private void Start()
{
int a = 5;
int b = -7;
// + 단항 연산
Debug.Log(+a);
Debug.Log(+b);
// - 단항 연산
Debug.Log(-a);
Debug.Log(-b);
// [출력]
// 5
// -7
// -5
// 7
}+연산자를 단항연산에 사용 시 기존의 값을 그대로 반환합니다.
-연산자를 사용 시 기존 값에 반대 부호를 적용한 값을 반환합니다.
private void Start()
{
uint a = 10;
// UInt 단항 연산
Debug.Log(+a);
Debug.Log(-a);
Debug.Log(a.GetType());
// -a를 가지는 b의 타입
var b = -a;
Debug.Log(b.GetType());
// [출력]
// 10
// -10
// System.UInt32
// System.Int64
}uint(양의 정수) 타입을 가진 변수에 -단항연산을 한 후 출력하면 반대 부호가 적용되며, 기존의 a의 타입에는 영향을 미치지 않습니다.
다만, ‘-a‘를 가지는 변수b의 타입은long 타입으로 변환됩니다.
곱하기 연산자(*)
private void Start()
{
var a = 5 * 2;
var b = 1.5 * 2;
Debug.Log($"{a} {a.GetType()}");
Debug.Log($"{b} {b.GetType()}");
// [출력]
// 10 System.Int32
// 3 System.Double
}곱하기 연산자는 피연산자 사이를 곱한 값을 제공합니다. 단, ‘*‘연산자를 단항연산자로 사용할 경우 이는 산술 연산이 아닌 포인터 간접 참조 연산자가 됩니다.
어떤 타입의 실수를 곱셈 연산 하는 지에 따라 타입이 결정됩니다.
나누기 연산자(/)
private void Start()
{
var a = 10 / 3;
var b = 2.0 / 1.0;
Debug.Log($"{a} {a.GetType()}");
Debug.Log($"{b} {b.GetType()}");
// [출력]
// 3 System.Int32
// 2 System.Double
}나누기 연산자는 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 값을 제공합니다.
위 예제의a변수 처럼 정수간 나눗셈을 할 경우 몫은 정수 타입이 되며, 소수점은 버림 처리됩니다.
private void Start()
{
var a = 1.0 / 0.0;
var b = 0.0 / 0.0;
Debug.Log(a);
Debug.Log(b);
// [출력]
// Infinity
// NaN
}나눗셈 연산에서 0이 아닌 수를 0으로 나눌 경우 값은 ‘수학적 무한대 (Infinity)’를 가지게 됩니다.
또한, 0을 0으로 나눌 경우 이는 ‘Not a Number (NaN)’가 됩니다.
나머지 연산자(%)
private void Start()
{
Debug.Log(7 % 2);
Debug.Log(7 % -2);
Debug.Log(-7 % 2);
Debug.Log(-7 % -2);
// [출력]
// 1
// 1
// -1
// -1
}나머지 연산자는 왼쪽의 피연산자에서 오른쪽의 피연산자를 나누었을 때의 나머지를 제공합니다.
나머지의 부호는 왼쪽 피연산자의 부호를 따릅니다.
private void Start()
{
Debug.Log(7.5 % 1.33);
Debug.Log(7.0f % -2.0f);
Debug.Log(-7.5d % 1.33d);
Debug.Log(-7.0m % -2.0m);
// [출력]
// 0.85
// 1
// -0.85
// -1.0
}소수의 나머지 연산도 왼쪽 피연산자의 부호를 따릅니다
복합할당 (+, -, * , /, %)
private void Start()
{
// + 복합할당
int a = 5;
a += 5;
Debug.Log(a);
// - 복합할당
int b = 3;
b -= 8;
Debug.Log(b);
// * 복합할당
int c = 2;
c *= 5;
Debug.Log(c);
// / 복합할당
int d = 10;
d /= 2;
Debug.Log(d);
// % 복합할당
int e = 7;
e %= 3;
Debug.Log(e);
// [출력]
// 10
// -5
// 10
// 5
// 1
}복합할당은 [n 연산자= 피연산자] 꼴로 사용되며, 의미는 n을 피연산자를 연산자로 연산한 수로 할당한다는 의미입니다.
(전위, 후위)증감연산자는 1을 더하고 빼지만, 복합할당을 사용하면 1외의 수를 다양한 연산자로 연산할 수 있습니다.
연산 우선 순위
- 후위증감연산자 (n++ n–)
- 전위증감연산자 (++n –n)
- 곱하기, 나누기, 나머지 연산자 (* / %)
- 더하기, 빼기 연산자 (+ -)
연산 우선 순위는 후위증감연산 부터 더하기 빼기 연산 순으로 진행됩니다.
연산의 순서를 임의적으로 변경하려면 소괄호'()’ 기호를 사용하여 연산의 순서를 변경할 수 있습니다.
private void Start()
{
Debug.Log(5 + 2 * 2);
Debug.Log((5 + 2) * 2);
// [출력]
// 9
// 14
}


