#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
Posted by 모과이IT
,