Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

ASCII NUL과 문자 '0'(ASCII 48), 숫자 리터럴 0의 차이점

ASCII NUL, ASCII '0', 숫자 리터럴 0은 어떻게 다를까?

C와 C++ 프로그래밍을 하다 보면 겉보기에 비슷해 보이는 세 가지 '0' 값을 자주 접하게 됩니다. 바로 ASCII NUL, 문자 '0', 그리고 숫자 리터럴 0입니다. 이 세 가지는 전혀 다른 의미를 가지며, 혼동하면 예상치 못한 버그의 원인이 될 수 있습니다.

각 값의 의미

ASCII NUL은 16진수로 0x00으로 표현되며, C나 C++에서 문자열의 끝을 나타내는 데 사용되는 특수 문자입니다. 반면 문자 '0'은 16진수로 0x30, 즉 10진수로 48에 해당하는 값을 가집니다. 프로그래머가 코드에 '0'(문자 0)이라고 작성하면 컴파일러는 이를 0x30으로 처리합니다.

마지막으로 숫자 리터럴 0은 말 그대로 정수 값 0 자체를 의미합니다.

코드로 확인하기

ASCII NUL을 표현하려면 '0'이 아닌 '\0'을 사용해야 한다는 점에 주의하세요. 아래 코드를 통해 세 값의 차이를 명확히 구분할 수 있습니다.

char asciiNul = '\0';   // ASCII NUL (0x00)
int zero = 0; // 숫자 리터럴 0
char zeroChar = '0'; // 문자 '0' (0x30, 10진수 48)
  • 첫 번째 변수(asciiNul): ASCII NUL 문자로, 문자열 종료를 나타냅니다.
  • 두 번째 변수(zero): 정수형 숫자 0입니다.
  • 세 번째 변수(zeroChar): 화면에 출력되는 문자 '0'으로, 내부적으로는 48의 값을 가집니다.

이처럼 세 값은 표기가 비슷하지만 메모리에 저장되는 실제 값과 용도가 완전히 다릅니다. 특히 문자열 처리 로직을 작성할 때 '\0'과 '0'을 혼동하지 않도록 각별히 주의해야 합니다.