Arithmetic operators (+, -)
Peponi │ 12/18/2024 │ 6m
C#
SyntaxOperator+++---
Arithmetic operators (+, -)
12/18/2024
6m
Peponi
C#
SyntaxOperator+++---
1. Introduction
산술 연산자 중 +, - 연산자는 정수, 부동 소수점 형식을 지원한다.
- 정수 형식은
int,uint,long,ulong형식으로 정의된다. (++,--제외)- 피연산자가 다른 정수 형식인 (
int보다 작은 데이터형) 경우 연산 결과는int형식으로 변환된다.
- 피연산자가 다른 정수 형식인 (
- 피연산자가 정수 또는 부동 소수점 형식인 경우 값을 포함할 수 있는 가장 가까운 형식으로 변환된다.
++, -- 연산자는 모든 숫자 형식과 char 형식에 사용 가능하며 복합 할당 식의 결과 형식은 왼쪽 피연산자의 형식이다.
2. 이진 연산
+ 연산자는 피연산자의 합계를 계산한다. - 연산자는 왼쪽 피연산자에서 오른쪽 피연산자를 뺀다.
Console.WriteLine(1 + 2);
Console.WriteLine(3 - 2);
/* output:
3
1
*/피연산자가 다음 형식인 경우 연산 결과는 int 형식으로 변환된다.
sbyte,byte,short,ushort
byte A = 1;
short B = 2;
var C = A + B;
Console.WriteLine(C);
Console.WriteLine(C.GetType());
/* output:
3
System.Int32
*/정수 또는 부동 소수점만의 연산 결과 형식은 피연산자 중 더 큰 형식이다. 피연산자의 형식이 같은 경우에는 같은 형식으로 지정된다.
int A = 1;
long B = 2;
var C = A + B;
Console.WriteLine(C);
Console.WriteLine(C.GetType());
float D = 2;
double E = 5;
var F = D + E;
Console.WriteLine(F);
Console.WriteLine(F.GetType());
/* output:
3
System.Int64
7
System.Double
*/정수와 부동 소수점 사이의 연산 결과 형식은 부동 소수점 형식이다.
long A = 3;
float B = 0;
var C = A - B;
Console.WriteLine(C.GetType());
/* output:
System.Single
*/3. 단항 연산
+연산자는 피연산자의 값을 반환한다.-연산자는 부호가 반전된 피연산자의 값을 반환한다.- 피연산자가
uint형식인 경우 연산 결과는long형식으로 변환된다.
- 피연산자가
- 피연산자가 다음 형식인 경우 연산 결과는
int형식으로 변환된다.sbyte,byte,short,ushort
Console.WriteLine(-(-10));
ushort A = 1;
var B = +A;
uint C = 2;
var D = -C;
Console.WriteLine(B);
Console.WriteLine(B.GetType());
Console.WriteLine(D);
Console.WriteLine(D.GetType());
/* output:
10
1
System.Int32
-2
System.Int64
*/3.1. 증감 연산자
++ 연산자는 피연산자를 1씩 증가시킨다. 변수, 프로퍼티 및 인덱서에 적용 가능하다. 피연산자를 기준으로 ++ 연산자의 위치에 따라 값의 변경 시점이 달라진다.
int A = 1;
Console.WriteLine(A);
Console.WriteLine(++A);
Console.WriteLine(A);
/*output:
1
2
2
*/int A = 1;
Console.WriteLine(A);
Console.WriteLine(A++);
Console.WriteLine(A);
/* output:
1
1
2
*/-- 연산자는 피연산자를 1씩 감소시킨다. 변수, 프로퍼티 및 인덱서에 적용 가능하다. 피연산자를 기준으로 -- 연산자의 위치에 따라 값의 변경 시점이 달라진다.
int A = 2;
Console.WriteLine(A);
Console.WriteLine(--A);
Console.WriteLine(A);
/*output:
2
1
1
*/int A = 2;
Console.WriteLine(A);
Console.WriteLine(A--);
Console.WriteLine(A);
/* output:
2
2
1
*/4. 할당 연산자
할당 연산자 += 또는 -=는 연산과 동시에 할당이 가능해지는 복합 할당 식을 가능하게 한다. 다음 두 식은 동일한 연산을 수행한다. (byte 연산 시 int로 변환되어 X = X + Y;는 실제로는 수행할 수 없는 코드이다.)
byte X = 255;
byte Y = 1;
X = X + Y;
X += Y;연산은 동일하지만 캐스팅이 다르게 되는데, 위의 예제를 조금 더 자세히 풀어보면 아래와 같다.
byte X = 255;
byte Y = 1;
X = (int)X + (int)Y;
X = (byte)((int)X + (int)Y);이런 캐스팅의 특성으로 인해 의도치 않은 계산의 결과가 일어날 수 있다.
byte X = 255;
byte Y = 1;
var Z = X + Y;
Console.WriteLine(Z);
Console.WriteLine(Z.GetType());
X += Y;
Console.WriteLine(X);
Console.WriteLine(X.GetType());
/* output:
256
System.Int32
0
System.Byte
*/- 새로운 값
Z는int형식이므로256을 출력한다. - 반면,
byte형식의 최대값은255(FF) 이기 때문에X의 값은0이 된다. - 코드 양을 줄이기 위해 축약형 표현을 사용하는 경우가 많은데, 연산을 하는 경우에는 주의가 필요하다.