반응형
[C언어 소스] 매크로 함수에서 주의할 점, 괄호 유무 차이 비교
#include <stdio.h>
#define
MacroAdd(x,y) x+y
#define MacroAdd2(x,y)
(x+y)
#define
MacroMul(x,y) (x*y)
#define
MacroMul2(x,y) ((x)*(y))
int main()
{
int result = 0;
result = MacroAdd(3,4)*5; // result = 3+4*5; 로전개
printf("MacroAdd(3,4)*5 결과: %d \n",result);
result = MacroAdd2(3,4)*5; // result = (3+4)*5; 로전개
printf("MacroAdd2(3,4)*5 결과: %d \n",result);
result = MacroMul(3+2,4)*5; // result = 3+2*4*5; 로전개
printf("MacroMul(3+2,4)*5 결과: %d \n",result);
result = MacroMul2(3+2,4)*5; // result = ((3+2)*(4))*5; 로전개
printf("MacroAdd2(3+2,4)*5 결과: %d \n",result);
return 0;
}
실행 결과
MacroAdd(3,4)*5 결과: 23
MacroAdd2(3,4)*5 결과: 35
MacroMul(3+2,4)*5 결과: 55
MacroMul2(3+2,4)*5 결과: 100
본문
반응형
'C언어 > 디딤돌 C언어 예제' 카테고리의 다른 글
[C언어 소스] 포인터 변수와 정수 형식 사이의 + 연산 (0) | 2016.11.26 |
---|---|
[C언어 소스] 배열 초기화 예 (0) | 2016.11.26 |
[C언어 소스] 속이 빈 정사각형 (0) | 2016.11.26 |
[C언어 소스] for 문을 이용하여 1부터 100까지의 합을 계산하는 예 (0) | 2016.11.25 |
[C언어 소스] do while 문을 사용하는 예(음수를 입력할 때까지 합계) (0) | 2016.11.25 |