선행처리 질문입니다.
얀새
2023.04.01
질문 제목 : 질문 내용 : #includestdio.h#define square num*numint main(void)
{
int num=10;
#if num
printf(%d\n,num);
#else
printf(no\n);
#endif#if square==num
printf(%d\n,num*num);
#else
printf(no no\n);
#endif return 0;
}
위는 컴파일러에 옮겨놓았을 시, 삭제되는 부분을 회색으로 표시해 두었습니다.보다시피 제가 생각한 것이랑 결과가 반대입니다..#if num - 부분에서는 num은 10이니까 참이라서 당연히 실행되어야 한다고 생각했는데.. 안되네요 뭐 이부분은 숫자 1만을 참으로 인정한다는 전제로 넘길 수 있었습니다.그러나#if square==num
- 이부분이 왜 참이 되지요?..선행처리가 진행되고 나면
num*num == num 이라는 공식으로 변하는데..이해가 안됩니다.도와주세요
-
첫빛
감사합니다. 근데 뒷부분은 왜 그럴까요?..
-
초시계
#if num
이 줄을 해석하는 시점에서는 num의 값을 모릅니다.
아직 컴파일을 하기 전이니까요.