가치(컴퓨터 과학)
Value (computer science)컴퓨터 과학 및 소프트웨어 프로그래밍에서 값은 프로그램에 의해 조작될 수 있는 엔티티의 표현입니다.유형의 멤버는 해당 유형의 [1]값입니다.
"[citation needed]변수 값"은 환경 내의 해당 매핑에 의해 지정됩니다.할당 가능한 변수가 있는 언어에서는 변수의 [2]r-값(또는 내용)과 l-값(또는 위치)을 구분해야 합니다.
선언적(고급) 언어에서는 값이 참조적으로 투명해야 합니다.즉, 결과 값은 값을 계산하는 데 필요한 식의 위치와 독립적입니다.로케이션의 내용(비트, 1 또는0)과 그 해석만이 중요합니다.[citation needed]
값 카테고리
이름에도 불구하고 C++ 언어 표준에서는 [3]: 8.2.1 이 용어는 값이 아닌 표현을 분류하는 데 사용됩니다.
할당: l-값 및 r-값
일부 언어에서는 할당문의 왼쪽과 오른쪽에 있는 일반적인 평가 모드에서 파생된 l-값과 r-값의 개념을 사용합니다.l-value는 단일 식을 넘어 지속되는 개체를 나타냅니다.r-value는 그것을 [4]사용하는 식 이상으로 지속되지 않는 일시적인 값입니다.
l-값과 r-값의 개념은 복합 프로그래밍 언어(CPL)에 의해 도입되었습니다.r-value, l-value 및 r-value/l-value 식의 개념은 입력 파라미터(값이 있음), 출력 파라미터(할당 가능), 입력/출력 파라미터(값이 있음 및 할당 가능)의 파라미터 모드와 유사하지만 자세한 내용은 컨텍스트와 언어에 따라 다릅니다.
R 값과 주소
많은 언어, 특히 C 패밀리에서 l-values는 실행 중인 프로그램에 프로그래밍 방식으로 액세스할 수 있는 스토리지 주소를 가지고 있습니다(예를 들어 C/C++의 &와 같은 연산자를 통해). 즉, 특정 메모리 위치에 대한 변수 또는 참조 해제임을 의미합니다.R-값은 l-값(아래 참조) 또는 l-값이 아닌 값(l-값과 구별하는 데만 사용되는 용어)일 수 있습니다.C 표현에 대해 생각해 봅시다.4 + 9
실행 시 컴퓨터는 13의 정수값을 생성하지만 이 13이 컴퓨터에 저장되어 있는 위치를 프로그램이 명시적으로 지정하지 않았기 때문에 표현식은 l-값이 아닙니다.한편, C 프로그램이 변수 x를 선언하고 값 13을 x에 할당하는 경우 식은x
값은 13이고 l-값입니다.
C에서 l-value라는 용어는 원래 할당될 수 있는 것을 의미하지만(따라서 이름이 할당 연산자의 왼쪽에 있음을 나타냄), 예약된 단어이기 때문에const
(paramic)이 언어에 추가되어 현재는 '수정 가능한 l-value'라는 용어가 되었습니다.C++11에서는 특별한 시멘틱 글리프&&
(와 혼동하지 말 것)&&
논리 연산에 사용되는 연산자)를 사용하여 컴파일러 전용 식 주소의 사용/액세스를 나타냅니다.즉, 주소는 Address-of를 사용하여 주소를 검색할 수 없습니다.&
프로그램 실행 시 연산자(이동 의미론 사용 참조)
이 기준 유형은 l-값뿐만 아니라 l-값이 아닌 모든 r-값에 적용할 수 있습니다.프로세서에 따라서는 1개 또는 여러 개의 명령어가 제공되고 있으며, 이 명령어는 즉석에서 얻을 수 있으며, 줄여서 "즉시"라고도 불립니다.즉시값은 보통 레지스터에 로드, 추가 또는 뺄 때 사용하는 명령의 일부로 저장됩니다.명령의 다른 부분은 opcode와 destination입니다.후자는 암묵적인 것일 수 있습니다.(즉시값이 아닌 값은 레지스터에 상주하거나 메모리 내의 다른 곳에 저장하여 명령에 해당 값에 대한 직접 또는 간접 주소(예를 들어 인덱스 레지스터 주소)를 포함하도록 요구할 수 있습니다.)
l-value 표현식은 객체를 지정합니다(참조).변경할 수 없는 l-값은 주소는 지정할 수 있지만 할당할 수는 없습니다.변경 가능한 l-값을 사용하면 지정된 개체를 변경하고 검사할 수 있습니다.r-값은 모든 표현식이고, l-값이 아닌 모든 표현식입니다.예를 들면, 「즉시 가치」(아래 참조)이며, 결과적으로 어드레싱 할 수 없습니다.
어셈블리 언어
값은 문자열, 숫자, 단일 문자 등 특정 데이터 유형에 따라 거의 모든 종류의 데이터가 될 수 있습니다.
프로세서는 종종 8비트나 16비트 등 두 가지 이상의 즉각적인 데이터 크기를 지원하며 각 명령 변형에 고유한 opcode와 니모닉을 사용합니다.프로그래머가 맞지 않는 데이터 값을 제공할 경우 어셈블러는 "Out of range" 오류 메시지를 발행합니다.대부분의 어셈블러는 즉시 값을 ASCII, 10진수, 16진수, 8진수 또는 2진수 데이터로 표시할 수 있습니다.따라서 ASCII 문자는'A'
와 같다65
또는0x41
문자열의 바이트 순서는 어셈블러와 컴퓨터 아키텍처에 따라 프로세서 간에 다를 수 있습니다.
메모들
- ^ 미첼 1996, 페이지 9
- ^ Mitchell 1996, 389–390페이지.
- ^ "ISO/IEC 14882:2017 Programming languages — C++". 2017.
- ^ "Lvalues and Rvalues (Visual C++)". Microsoft Developer Network. Retrieved 3 September 2016.
레퍼런스
- Mitchell, John C. (1996). Foundations for Programming Languages. The MIT Press. ISBN 0-262-13321-0.
- Strachey, Christopher (2000). "Fundamental Concepts in Programming Languages". Higher-Order and Symbolic Computation. 13: 11–49. doi:10.1023/A:1010000313106.