>백엔드 개발 >C++ >C 문자 리터럴이 정수로 표시되는 이유는 무엇입니까?

C 문자 리터럴이 정수로 표시되는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-29 18:21:11513검색

Why are C Character Literals Represented as Integers?

왜 C 문자 리터럴은 문자가 아닌 정수인가요?

프로그래밍 세계에서 문자는 일반적으로 단일 바이트 정수로 표시됩니다. 이는 C를 포함한 대부분의 프로그래밍 언어에 해당됩니다. 그러나 C 문자 리터럴은 이 규칙의 예외입니다. 실제로는 문자가 아닌 정수로 표시됩니다. 이는 문자 리터럴이 문자처럼 동작할 것으로 기대하는 언어 입문자에게는 놀라운 일이 될 수 있습니다.

이 디자인 결정의 근거는 C 언어의 역사에 뿌리를 두고 있습니다. Dennis Ritchie는 C를 개발할 때 언어를 가능한 한 작고 효율적으로 유지하고 싶었습니다. 그가 한 방법 중 하나는 문자 리터럴을 정수로 표현하는 것이었습니다. 이를 통해 당시 중요한 관심사였던 공간과 메모리를 절약할 수 있었습니다.

이러한 디자인 결정은 당시에는 합리적이었을지 모르지만 오늘날 프로그래머에게는 혼란의 원인이 될 수 있습니다. 예를 들어, 다음 코드는 값 97을 인쇄합니다.

printf("%d", 'a');

이는 'a'가 정수로 표시되고 printf() 함수가 정수를 인수로 기대하기 때문입니다. 'a' 문자를 인쇄하려면 %c 형식 지정자를 사용해야 합니다.

printf("%c", 'a');

이렇게 하면 예상대로 'a' 문자가 인쇄됩니다.

구별 포인터로 작업할 때 문자 리터럴과 정수 사이의 차이도 중요할 수 있습니다. 예를 들어, 다음 코드는 정수에 대한 포인터를 생성합니다:

int *p;

그러나 다음 코드는 문자에 대한 포인터를 생성합니다:

char *p;

이것은 'a '는 정수로 표현되며, 컴파일러는 p가 정수에 대한 포인터라고 추론합니다. 문자에 대한 포인터를 생성하려면 다음 구문을 사용해야 합니다.

char *p = "a";

이렇게 하면 문자 'a'에 대한 포인터가 생성됩니다.

문자 간의 구별 리터럴과 정수는 처음에는 약간 혼란스러울 수 있지만 올바른 C 코드를 작성하려면 이해하는 것이 중요합니다. 위의 팁을 따르면 일반적인 함정을 피하고 효율적이고 올바른 코드를 작성할 수 있습니다.

위 내용은 C 문자 리터럴이 정수로 표시되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.