2010. 4. 26. 04:02

증가연산자 혹은 증감연산자 사용시 주의사항

++, --사용시 주의사항입니다.

i++;
i--;
같이 자주쓰이는 연산자중 하나인데요.
간편하고 빨라서 아주 요긴하게 쓰이긴 하지만, 이 때문에 실수가 가끔 일어나기도 합니다.
이를테면....

i = 2;
int result = max( i--, 0 );

얼핏보면 제대로 나오는 것같지만 result가 0이 됩니다. 1을 예상했는데도 말이죠...
여기에서 max가 매크로로 되어있다면....?
이 경우는 max가 함수가 아닌 매크로로 되어있다면 가능한 일입니다.

WinDef.h에 정의되어있는 max매크로입니다.
#define max(a,b)            (((a) > (b)) ? (a) : (b))

즉, 이렇게 변경이 되겠죠.
int result = (((i--) > (0)) ? (i--) : (0))

따라서 0이 나오는 겁니다.