++, --사용시 주의사항입니다.
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이 나오는 겁니다.
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이 나오는 겁니다.
'C/C++ > 에러도우미' 카테고리의 다른 글
기본 클래스를 정의하지 않았습니다. (0) | 2010.06.15 |
---|---|
교차 포함 시 대량의 오류가 발생하는 경우 (3) | 2010.06.13 |
소스 파일이 모듈을 빌드했을 때와 다릅니다. 현재 위치에 사용할 수 있는 소스 코드가 없습니다. (1) | 2010.04.23 |
메모리릭 검출 중에 황당한 오류를 접한 경우 (0) | 2010.04.21 |
ZeroMemory또는 memset시 유의사항 (0) | 2010.04.20 |