#define max(a,b) ((a) > (b) ? (a) : (b))
일 경우 우선 모든 인자를 괄호로 묶어야한다. 그렇지않으면 다른 문제가 생길수 도 있다.
또한 신기한상황을 보면
int a=5, b = 0;
max(++a,b); //a가 두번 증가한다.
max(++a,b+10); //a가 한번 증가한다.
이유는 알것이다.
또한 서로 다른 여러가지 데이터 타입이 들어갈경우 예외 상황이 발생한다.
위의것을 template로 변형하면
template<class T>
inline const T& max ( const T& a, const T& b)
{return a > b ? a : b; }
이러한 template는 모든 타입의 함수를 생성한다.
이렇게 될경우 여러가지 타입을 쓸수있다.
'개발지식창고 > C' 카테고리의 다른 글
전위 후위 증감 연산자, ++i, i++ 차이 (0) | 2012.09.28 |
---|---|
비트 시프트 연산자를 이용한 프로그램 (0) | 2011.08.31 |
define 대신 inline을 쓰자 (0) | 2010.09.20 |
C 문자열 함수 정리 (0) | 2010.09.20 |
BASE64 Encode/Decode (0) | 2010.09.20 |