inflearn logo
강의

Course

Instructor

(2026 Latest!) Pass the Information Processing Engineer Practical Exam in just one week

Conditional Statements (v2)

NULL과 0

Resolved

67

happwhy

24 asked

0

image.png

왼쪽 코드 맨아래 설명을 생략하신거 같은데요 NULL은 숫자 0이 아니잖아요
그래서 NULL==0은 거짓이니까 0이라고 생각했습니다

그래서 저는 출력 시 NULL==0의 결과: 0 이라고 생각했거든요

그런데 오른쪽 출력값에 1이라고 나와있더라구요 오타인가요? 아니면 제가 이해를 잘 못한건가요??

python java c 정보처리기사 정보처리산업기사

Answer 2

0

weekendcode

안녕하세요.

오타 아니고, 출력값 1이 맞습니다. 헷갈리신 지점이 아주 흔하면서도 중요한 부분이에요.


핵심은 C에서 정수 리터럴 0이 단순한 숫자 역할만 하는 게 아니라, "널 포인터 상수(null pointer constant)" 라는 특별한 역할도 겸한다는 점입니다.

포인터와 0을 비교하는 자리에서는 이 0이 자동으로 "널 포인터"로 취급합니다.


그래서 NULL == 0은 실제로 이렇게 평가됩니다:

  • NULL → 널 포인터

  • 0 → 포인터와 비교되는 자리에 있으므로 널 포인터로 변환됨

  • 결과: 널 포인터 == 널 포인터 → 같음 → 참 → 1


"NULL은 숫자 0이 아니니까 다르다, 그래서 거짓"이라는 추론은 자연스럽지만, C 표준이 "포인터와 비교되는 0은 널 포인터를 뜻한다"고 명시적으로 정해놨기 때문에 그 규칙에 걸립니다.


C언어에서는 NULL == 0의 비교 결과는 표준이 항상 참이 되도록 보장합니다. 그리고 이건 슬라이드 위쪽에 나오는 '\0'과는 살짝 다른 개념이라 구분해두면 좋습니다:

  • '\0' → 값이 0인 문자(char). 그래서 if('\0')은 거짓.

  • NULL → 아무것도 안 가리키는 포인터. 그래서 포인터가 NULL이면 if(ptr)는 거짓.

둘 다 "0과 얽힌 falsy 값"이라 함께 묶여서 나오지만, 하나는 문자고 하나는 포인터라는 점만 기억하시면 되겠습니다.

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 가보자고님.

C 언어에서 NULL과 숫자 0의 관계에 대한 질문을 주셨군요. 혼란을 겪는 부분에 대해 설명드리겠습니다.

NULL과 숫자 0의 관계

  • NULL: C 언어에서 NULL은 보통 포인터의 초기화에 사용되며, 정수형 0으로 정의되는 경우가 대부분입니다. 이는 stdio.h등의 헤더 파일에서 #define NULL ((void*)0) 와 같은 방식으로 정의될 수 있습니다. 따라서 NULL0은 동일한 값으로 간주될 수 있습니다.

  • 0: 정수 0은 C에서 거짓으로 판단됩니다. 그러나 NULL 역시 정수형 0으로 표현되므로 NULL == 0은 참(1)으로 평가됩니다.

아마도 코드의 실행 결과에서 NULL == 01로 나오는 것이 놀라우셨던 것으로 보입니다. 이는 오타가 아니라 C 언어의 정의에 따른 결과이므로 정확하게 이해하신 것입니다.

관련된 내용을 더 잘 이해할 수 있는 유사한 질문과 답변을 확인해 보시면 도움이 될 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

정처기 필기 준비할때 이 이론을 다시 외워도 될까요?

0

17

1

조건 반복문 질문: for 문 ?

0

52

1

정처기 26-2회. 9번 질문드립니다!

0

72

1

이론 보면서 질문이 있습니다.

0

68

2

정보처리기사 실기 26년 2회 SRT 스케줄링 문제 단위 질문

0

79

2

유튜브(정보처리기사 실기 | 26년 2회 기출문제 코드 해설)

0

123

2

262 정처기 실기 C언어코딩

0

39

1

정보처리기사 262 실기 Hash(해시) 질문

0

72

2

static 변수 질문입니다.

0

58

2

파이썬 4강 질문입니다.

0

66

2

모의고사 1회 3번문제

0

83

3

41강 30:10

0

63

2

이론 공부법 질문 있습니다.

0

84

2

부모의 생성자 관련 질문

0

61

2

시험지 문제에 필기해도 되나요?

0

82

3

41강 11:23

0

52

2

4강파이썬 질문입니다

0

50

2

try-catch 핸들러명

0

63

2

36강 3:48

0

62

2

35강 18:27

0

63

2

자식 코드 내 super() 생략

0

58

2

출력질문

0

72

2

31강 4:06

0

63

2

파이썬 학습자료가 강의 자료와 다릅니다.

0

92

3