#include <stdio.h>#define min(a,b) a<b?a:bint main() { int a = 2, b = 3; printf("%d", min(a, b) + 1);}이거 왜 3이아니라 2가출력되는건가요?1+min(a,b) 출력하면 제대로 3뜹니다.뒤에 +1이 먹히는거같은데 혹시 왜그런건지 아는분 계신가여?
해결했습니다. 전처리기로 처리한 함수는 기계적 치환을 통해 계산하기때문에 min(a,b)+1을 a<b?a:b+1 로 해석해 2(a)와 4(b+1)을 비교한 후 작은 2를 반환하기 때문이네요.
#define 에 괄호.