TRUE랑 FALSE macros를 왜 이렇게 정의해 놨죠?
조회수 2442회
책에서 보니까 TRUE
/FALSE
를 이렇게 정의해놨던데 이유를 모르겠어요
#define TRUE '/'/'/'
#define FALSE '-'-'-'
이게 무슨 의미 인가요? 왜 저걸 1/0으로 쓸 수 있나요?
1 답변
-
TRUE :
'/' / '/'
는 문자'/'
를 서로 나누고 있습니다.char temp = '/'
temp
/temp
라고 하면 좀 더 이해하기 쉬우시려나요?
a/a = 1
이니까true
로 쓸 수 있습니다FALSE :
'-' - '-'
는 문자'-'
를 서로 빼고 있습니다.다른 말로 하면
char temp
='-'
temp - temp
입니다.
a-a = 0
이니까false
로 쓸 수 있습니다.사실, 쓸 수 있는 것과는 별개로 별로 좋은 코드는 아닙니다.
0/1로 쓰는 것 보다 가독성이 안 좋고, 식을 괄호로 묶지 않았기 때문입니다.
괄호로 묶지 않았기 때문에 다음의 코드를 실행하면
#include <stdio.h> #define TRUE '/'/'/' #define FALSE '-'-'-' int main() { printf ("%d\n", 2 * FALSE); return 0; }
-
를(제 컴퓨터에서는 45) 출력합니다#define TRUE ('/'/'/')
같이 꼭 괄호를 붙여주세요.
댓글 입력