프로그래밍 언어에서 전위 증가 연산자(Pre Increment, ++b)와 후위 증가 연산자(Post Increment, b++)는 모두 변수의 값을 1만큼 증가시키는 연산자입니다. 두 연산자의 핵심적인 차이는 값이 증가되는 시점에 있습니다. 이 글에서는 C, C++, Java, C# 네 가지 언어에서 각 연산자가 어떻게 동작하는지 예제 코드와 함께 자세히 살펴봅니다.
전위 증가 연산자(Pre Increment: ++b)
전위 증가 연산자는 변수의 값을 표현식에서 사용하기 이전에 먼저 증가시킵니다. 즉, 값이 먼저 1 증가한 후, 증가된 값이 표현식 안에서 사용됩니다.
예를 들어 a = ++b;라는 표현식에서 b가 처음에 5를 저장하고 있다면, b가 먼저 6으로 증가한 뒤 그 값이 a에 대입됩니다. 따라서 a에는 6이 저장됩니다.
C++ 예제 코드
#include <iostream>
using namespace std;
int main() {
int a, b = 15;
a = ++b;
cout << a;
return 0;
}
출력 결과
16
C 예제 코드
#include <stdio.h>
int main() {
int a, b = 15;
a = ++b;
printf("%d", a);
return 0;
}
출력 결과
16
Java 예제 코드
public class IncDec {
public static void main(String[] args) {
int a, b = 15;
a = ++b;
System.out.println(a);
}
}
출력 결과
16
C# 예제 코드
using System;
namespace IncDec {
class Inc {
static void Main() {
int a, b = 15;
a = ++b;
Console.WriteLine(a);
}
}
}
출력 결과
16
후위 증가 연산자(Post Increment: b++)
후위 증가 연산자는 변수의 값을 표현식에서 사용한 이후에 증가시킵니다. 즉, 현재 값이 먼저 표현식에 적용된 다음, 그 후에 값이 1 증가합니다.
예를 들어 a = b++;라는 표현식에서 b가 처음에 5를 저장하고 있다면, 기존 값 5가 먼저 a에 대입된 후 b가 6으로 증가합니다. 따라서 a는 5, b는 6이 됩니다.
C++ 예제 코드
#include <iostream>
using namespace std;
int main() {
int a, b = 15;
a = b++;
cout << a;
cout << b;
return 0;
}
출력 결과
15 16
C 예제 코드
#include <stdio.h>
int main() {
int a, b = 15;
a = b++;
printf("%d\n", a);
printf("%d\n", b);
return 0;
}
출력 결과
15 16
Java 예제 코드
public class IncDec {
public static void main(String[] args) {
int a, b = 15;
a = b++;
System.out.println(a);
System.out.println(b);
}
}
출력 결과
15 16
C# 예제 코드
using System;
namespace IncDec {
class Inc {
static void Main() {
int a, b = 15;
a = b++;
Console.WriteLine(a);
Console.WriteLine(b);
}
}
}
출력 결과
15 16
정리
a = ++b;(전위 증가)는 b를 먼저 증가시킨 후 a에 대입하므로 a와 b가 모두 같은 값을 가지게 되고, a = b++;(후위 증가)는 기존 값을 먼저 a에 대입한 뒤 b를 증가시키므로 a는 이전 값, b는 증가된 값을 가지게 됩니다. 이러한 동작 방식은 C, C++, Java, C# 어느 언어에서나 동일하게 적용되므로, 반복문이나 조건문에서 증가 연산자를 사용할 때 두 연산자의 차이를 정확히 이해하고 있는 것이 중요합니다.