C 및 C에서 문자열 리터럴은 모든 리터럴이 r이라는 규칙의 예외입니다. -가치. C 03 표준에서는 다른 리터럴이 r 값인 반면 문자열 리터럴은 l 값이라고 명시합니다. 마찬가지로 C99 표준에서는 문자열 리터럴을 l-값으로 정의합니다.
이러한 구별은 문자열 리터럴이 객체라는 특성에서 비롯됩니다. 고정된 값을 나타내는 다른 리터럴과 달리 문자열 리터럴은 배열 유형의 개체입니다. C에서는 배열이 표현식의 l-값으로만 존재할 수 있습니다.
문자열 리터럴을 더 유용하게 만들려면 배열 유형 대신 포인터 유형을 갖도록 정의하는 것은 비현실적입니다. 이렇게 하면 문자열 리터럴에 sizeof 연산자를 적용할 수 없습니다.
C99 표준에서는 l-값이기도 한 복합 리터럴을 도입했습니다. 그들의 도입은 특별한 예외가 아닌 리터럴이 l-값이라는 표준으로의 전환을 암시합니다. 복합 리터럴을 사용하면 특정 값으로 초기화된 임시 개체를 만들 수 있습니다. 문자열 리터럴과 마찬가지로 l-값으로 존재합니다.
이러한 구별의 이유는 하드웨어 아키텍처에 뿌리를 두고 있을 수도 있습니다. 초기 컴퓨터에서는 문자열이 문자 배열에 대한 포인터가 아닌 문자 배열로 저장되었습니다. 이러한 역사적 맥락은 문자열 리터럴을 l-값으로 정의하는 선택에 영향을 미쳤을 수 있습니다.
문자열 리터럴은 배열 유형의 개체이기 때문에 C 및 C에서 l-값으로 정의됩니다. 다른 리터럴은 고정된 값인 반면 문자열 리터럴은 수정되거나 참조될 수 있는 개체입니다. 이러한 구별을 통해 프로그래밍에서 문자열 리터럴을 보다 유연하게 사용할 수 있습니다.
위 내용은 C와 C에서 문자열 리터럴은 L-값이고 다른 리터럴은 R-값인 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!