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

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

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

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

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

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.