C언어와 C++언어에서는 연산자가 많이 있다. 세계에서 가장 유명한 연산자인 ++을 예로 들어보자.[각주:1]

int n=0;

위와 같이 선언되어 있다고 하자. 그럼
n++;

이렇게 하면 n=n+1; 이 실행된다.
++n;

이렇게 해도 n=n+1; 이 실행된다.

뭔 차이냐...라고 묻는다면, 아주 작은 차이가 있다. 우선, 최종적으로 n=n+1;이 실행된다는 점에는 변화가 없다. 하지만 다음과 같이 써먹을 수 있다.

int m;

일단 이렇게 하나 선언하고나서
m=n++;

위와 같이 써먹으면, 그 문장은 다음과 같이 작동한다.
m=n;
n=n+1;

하지만 다음과 같이 쓸 수도 있다.
m=++n;

이 문장은 다음과 같이 작동한다.
n=n+1;
m=n;

별 차이 없어 보이지만, 결과적으로 m에 대입되는 값이 달라진다. ++이 n의 뒤에 붙어있을 때는, 일단 대입하고나서 n에 1을 더한다. 따라서 m에는 n보다 1이 작은 값이 들어가 있게 된다. 하지만 ++이 앞에 붙어있을 때는 일단 더하고 나서 대입한다. 따라서 m과 n은 같은 값을 갖게 된다.

이 사소한 차이는, 매우 사소한 차이지만 프로그램을 만들 때 그 결과에 큰 차이를 갖고 오게 된다. 실제로 프로그램을 만들 때 어떤 변수에 +1을 할 일이 굉장히 많은데, 쓸 때마다 한번씩 고민하면서 써 보자. 아무 생각 없이 쓰면 틀린다.

참고로, -1을 해주는 연산자도 있다. 예상했다시피 --이다. 작동방법과 사용방법은 ++과 동일하다.

그럼 **은 뭐냐고? 음...x1을 해주는 연산자라고 생각할 수도 있겠지만 아쉽게도 이중포인터 연산자이다. C++을 만든 사람들도 **의 용도에 대해서 고민하다가 1을 곱하는건 수학적으로 아무 일도 하지 않는다는 것을 깨닫고 다른데에 써먹었을 것이다. 그리고 //도 있다. 이것 역시 1로 나누는 연산자였으면 좋겠지만 **과 마찬가지 이유로 다른 용도로 쓰인다. //뒤에 쓴 문장은 그 줄이 끝나는 부분까지 전부 아무것도 실행되지 않는다. 즉, 프로그램에 설명을 달고 싶을 때 쓰면 된다. 아니면 그 줄을 실행시키기 싫어졌다면 제일 앞에 //을 붙이면 된다.
  1. ++연산자는 언어 이름에도 들어가 있기 때문에 C++이 유명한 만큼 유명한 연산자이다. [본문으로]
by snowall 2010. 6. 26. 13:42