Language/C#

[C#] 기초 문법 - 증감연산자, 전위/후위연산자

달별선장 2023. 8. 30. 10:37
728x90

1. 증감연산자

int vlaue = 0;

value += 1; // value : 1
value++;    // value : 2

value -= 1; // value : 1
value--;    // value : 0

위 코드는 아래의 코드와 같다.

int vlaue = 0;

value = value + 1; // value : 1
value = value + 1; // value : 2

value = value - 1; // value : 1
value = value - 1; // value : 0

 

2. 전위/후위 연산자

1) 전위 연산자

위에서 살펴본 증감연산자 ++ 혹은 -- 가 변수의 앞에 붙은 형태를 전위 연산자라고 한다.

형태)

++value;
--value;

전위 연산자는 변수에 1의 값을 먼저 증감시킨 후 나머지 연산이 있다면 해당 연산을 수행한다. (혹은 코드를 실행한다.)

예시)

int value = 0;

Console.WriteLine(++value);
Console.WriteLine(value);

Console.WriteLine(--value);
Console.WriteLine(value);

출력 결과)

1 // value의 값을 1 증가시킨다.
1 // value의 값은 1 이 된다.

0 // value의 값을 1 감소시킨다.
0 // value의 값은 0 이 된다.

 

2) 후위 연산자

위에서 살펴본 증감연산자 ++ 혹은 -- 가 변수의 뒤에 붙은 형태를 후위 연산자라고 한다.

형태)

value++;
value--;

후위 연산자는 나머지 연산이 있다면 해당 연산을 수행한 후(혹은 코드를 실행한 후) 변수에 1의 값을 나중에 증감시킨다. 

예시)

int value = 0;

Console.WriteLine(value++);
Console.WriteLine(value);

Console.WriteLine(value--);
Console.WriteLine(value);

출력 결과)

0 // 변수 출력문을 수행하고, 그 다음에 변수에 1의 값을 증가시킨다.
1 // 1의 값이 증가된 변수의 값이 출력된다.

1 // 변수 출력문을 수행하고, 그 다음에 변수에 1의 값을 감소시킨다.
0 // 1의 값이 감소된 변수의 값이 출력된다.

 

 

그렇다면 전위 연산자와 후위 연산자가 복합되어 있는 경우는 어떨까?

int value1 = 3;
int value2 = 4;

Console.WriteLine(value1++ > --value2); // False

단순히 보면, value1 에 1을 증가한 값이 4이고, value2에서 1을 감소한 값이 3이니,

value1 > value2 는 4 > 3 이 되어,

비교연산자에 의해 참으로 판정되어 True 가 출력될 것 같다.

 

하지만 value1은 후위연산자가 붙어 연산을 수행한 후 1을 증가시키고,

value2는 전위 연산자가 부터 연산을 수행하기 전 1을 감소시킨 후, 1이 감소된 값이 저장된 변수 value2 의 값으로 연산을 수행한다.

 

따라서 위의 비교연산에 값을 대입해서 보면

3 > 3 이 되기 때문에 False 가 출력된다.

 

만일 이 다음 연산이 있다면,

그 때의 value1의 값은 4가 될 것이다.

Console.WriteLine(value1); // 4

전체 소스)

int value1 = 3;
int value2 = 4;

Console.WriteLine(value1++ > --value2);
Console.WriteLine(value1);

/* 출력 결과 :
False
4
*/
728x90