inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

조건문 (v2)

NULL과 0

해결된 질문

33

가보자고

작성한 질문수 14

0

image.png

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

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

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

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

답변 2

0

주말코딩

안녕하세요.

오타 아니고, 출력값 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

인프런 AI 인턴

안녕하세요, 인프런 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 언어의 정의에 따른 결과이므로 정확하게 이해하신 것입니다.

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

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

9강 35분경 질문있습니다

0

12

1

11강 3:20

0

12

1

10강 11:42

0

13

1

9강 26:23

0

19

1

9강 23:46

0

12

0

코드 중간에 . 붙은건 뭐라고 봐야할까요?

0

25

2

설명중 단어 의미 해석 문제.

0

18

1

수강 섹션마다 옆에 자료 다운로드 버튼이 있는데. 다운받으면 무슨내용이 있는건가요?

0

15

1

SQL 집중학습

0

34

1

26년 1회 기출문제 11번 질문드립니다

0

34

1

업캐스팅 문제예시5 & 업캐스팅 문제 예시 6

0

33

1

V1.2 VS V.091

0

38

2

split('T')일때는 T만 제거되는거고 공백은 제거되지 않는 건가요?

0

41

2

파이썬 언어 업데이트, 언어별 학습자료 업데이트

0

46

2

C, java, python 언어 기출문제 강의 질문

0

45

2

1:26 에서 반복문 i[1] 이니까 0 다음 두번째 항목들 아닌가요

0

43

2

d

0

41

2

출력값

0

41

2

(기출) 2023년 3회 코드해석 문제의 1:10입니다.

0

44

2

23년도 2회 c언어 0:03 n[(i+6)%5] 도 가능한건가요?

0

46

2

정처기 질문

0

51

2

자식 기본 생성자 출력 조건

0

44

2

부모 및 자식 기본생성자 호출

0

44

2

포인터 16강 9:44

0

32

1