TRUE랑 FALSE macros를 왜 이렇게 정의해 놨죠?


책에서 보니까 TRUE/FALSE를 이렇게 정의해놨던데 이유를 모르겠어요

    #define TRUE  '/'/'/'
    #define FALSE '-'-'-'

이게 무슨 의미 인가요? 왜 저걸 1/0으로 쓸 수 있나요?

  • 2016년 01월 24일에 작성됨

조회수 223


1 답변


좋아요
0
싫어요
채택취소하기

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 ('/'/'/') 같이 꼭 괄호를 붙여주세요.

  • 2016년 01월 24일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close