Betydelse (datavetenskap)

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 24 februari 2021; kontroller kräver 2 redigeringar .

Ett värde i programmering är ett  dataelement , som är en av de möjliga medlemmarna av en datatyp [ 1] , som kan motsvara något tillstånd av en variabel eller konstant av motsvarande typ. Till exempel  är ett värde av heltalstyp . 2

På språk med förmågan att tilldela värden till variabler, blir det nödvändigt att skilja mellan r-värden (r-värde - innehåll) och l-värden (l-värde - plats) för en variabel [ 2] .

deklarativa språk måste värden vara referenstransparenta . Detta betyder att utdatavärdet är oberoende av platsen för uttrycket (eller deluttrycket) som krävs för att utvärdera värdet.

L-värden och r-värden

Idén med värden och r-värden kommer från programmeringsspråk med tilldelningsoperatorer, där värden till vänster (vänster) och höger (höger) om operatören använder en olika utvärderingsläge. l-värdet pekar på ett objekt som kvarstår bortom ett enda uttryck. Ett r-värde är ett tillfälligt värde som inte består utöver det uttryck som använder det. [3]

Begreppen l-värde och r-värde introducerades i CPL -språket . Begreppen i uttryck för r-värden, l-värden och r/l-värden motsvarar följande parameterlägen : ingångsparameter (har ett värde), utgångsparameter (kan tilldelas) och ingångs-/utgångsparameter ( har ett värde och kan tilldelas), men det finns tekniska skillnader mellan språk beroende på sammanhanget.

R-värden och adresser

På många språk, särskilt C-liknande , har l-värden en lagringsadress som är programmatiskt tillgänglig för det körande programmet (till exempel med "&"-adresseringsoperatorn i C/C++). Det betyder att l-värden är variabler eller referenser därifrån till specifika minnesområden. R-värden kan vara l-värden (se nedan) eller icke-l-värden (en term som introducerats för att skilja det från l-värden). Ta till exempel ett uttryck 4 + 9på C-språket. Vid körning genererar programmet värdet 13, men eftersom programmet inte anger var dessa 13 finns, är uttrycket inte ett l-värde. Å andra sidan, om ett C-program deklarerar en variabel x som är tilldelad värdet 13, så har uttrycket xvärdet 13 och är ett l-värde.

Till en början betecknade termen l-värde i C-språket något som något kan tilldelas (därav namnet, vilket indikerar att det är till vänster (vänster) om tilldelningsoperatorn), men eftersom det reserverade ordet const(konstant ) har har lagts till i språket ), låter termen nu som "modifierbart l-värde". I C++11 finns det en speciell semantisk glyf &&för "använd adressen till ett uttryck endast av kompilatorn"; det vill säga adressen kan inte beräknas av operatören &under programexekveringen. (se flytta semantik ).

Omedelbar betydelse

Denna typ av referens kan användas av alla r-värden, inklusive både l-värden och icke-l-värden. Vissa processorer har instruktioner som tar ett omedelbart värde .  Det omedelbara värdet lagras som en del av en instruktion som vanligtvis använder det för att placera det i ett register eller lägga till eller subtrahera från det. De andra delarna av instruktionen är opcoden och mottagaren (registret). Det senare kan vara outtalat. Ett icke-omedelbart värde kan finnas i ett register eller i minnet, och en instruktion måste innehålla en direkt eller indirekt adress för värdet, såsom index för registret från vilket värdet är hämtat.

L-värde

L-värde som ett uttryck pekar på ett objekt[ specificera ] . Ett icke-modifierbart (konstant) l-värde har en adress men kan inte ändras. Däremot låter ett föränderligt l-värde dig inte bara hämta ett objekt, utan också tilldela ett annat värde till det. Ett R-värde är vilket uttryck som helst (inklusive l-värden), och ett icke-l-värde är vilket uttryck som helst som inte är ett l-värde. Ett exempel på ett icke-l-värde är ett omedelbart värde som inte har någon adress.

På assemblerspråk

Värdet kan vara av vilken som helst av de tillgängliga datatyperna : det kan vara en sträng, en siffra eller ett enda tecken.

Många processorer stöder flera storlekar av omedelbara värden, såsom 8 eller 16 bitar, med olika instruktionskoder för varje. Om programmeraren infogar ett värde som inte passar, ger assemblern ett "Out of range " -fel .  De flesta assemblerare tillåter omedelbara värden i ASCII- , decimal- , hexadecimal- , oktal- eller binärformat . Det betyder att ASCII-tecknet är identiskt med värdet eller . Byteordningen i textsträngar kan variera beroende på typ av processor, assemblerversion eller datorarkitektur. 'A'650x41

Anteckningar

  1. Mitchell, 1996 , sid. 9.
  2. Mitchell, 1996 , sid. 389–390.
  3. Lvärden och Rvärden (Visuell C++) . MSDN . Hämtad 3 september 2016. Arkiverad från originalet 9 oktober 2018.

Litteratur