/* define (메크로) 함수에 조건넣기 */
#include <stdio.h>
#define DIFF_ABS(X, Y) ( (X)>(Y) ? (X)-(Y) : (Y)-(X) )
int main(void)
{
printf("두값의 차: %d \n", DIFF_ABS(5,7));
printf("두값의 차: %g \n", DIFF_ABS(1.8, -1.4);
return 0;
}
/* 문자열 붙이기 */
#include <stdio.h>
//#define STNUM(Y, S, P) ( (Y)*100000 + (S)*1000 + (P))
#define STNUM(Y, S, P) Y ## S ## P
int main()
{
printf("학번: %d \n", STNUM(10, 65, 175));
printf("학번: %d \n", STNUM(10, 65, 075));
return 0;
}
주석처리된 define으로 실행하게되면 printf의 두번째 출력이 원하는 값과 다르게 나온다
이점은 075가 8진수로 받아 들여지기 때문인데 만약 075에서 "0"이 아닌 다른값이었다면
원하는 출력이 나왔을것이다.
이런점을 방지하고 문자열을 붙이는 방법으로 매개변수(?)들 사이에 ##을 넣어주면
어떤 값이든 문자열로 결합시켜준다.
'Study > C' 카테고리의 다른 글
little endian & bigendian (0) | 2014.09.12 |
---|---|
헤더파일 include (0) | 2014.09.02 |
문자열 비교 (0) | 2014.09.01 |
구조체 (0) | 2014.09.01 |
문자(열) 입출력 (0) | 2014.09.01 |