Arvo ohjelmoinnissa on tietoelementti , joka on yksi tietotyypin [1] mahdollisista jäsenistä , joka voi vastata jotakin vastaavan tyyppisen muuttujan tai vakion tilaa. Esimerkiksi on kokonaislukutyyppinen arvo . 2
Kieleissä, joissa on kyky määrittää muuttujille arvoja, on välttämätöntä erottaa muuttujan r-arvot (r-arvo - sisältö) ja l-arvot (l-arvo - sijainti) [ 2] .
Deklaratiivisilla kielillä arvojen on oltava viitteellisesti läpinäkyviä . Tämä tarkoittaa, että tulosarvo on riippumaton arvon arvioimiseen vaadittavan lausekkeen (tai osalausekkeen) sijainnista.
Ajatus arvoista ja r-arvoista tulee ohjelmointikielistä, joissa on määritysoperaattoreita, joissa operaattorin vasemmalla (vasemmalla) ja oikealla (oikealla) olevat arvot käyttävät erilainen arviointitila. L-arvo osoittaa objektiin, joka säilyy yhden lausekkeen ulkopuolella. R-arvo on väliaikainen arvo, joka ei säily sitä käyttävän lausekkeen ulkopuolella. [3]
Käsitteet l-arvo ja r-arvo otettiin käyttöön CPL -kielellä . R-arvojen, l-arvojen ja r/l-arvojen ilmaisujen käsitteet vastaavat seuraavia parametritiloja : tuloparametri (sillä on arvo), lähtöparametri (voidaan määrittää) ja tulo-/lähtöparametri ( on arvoa ja se voidaan määrittää) , mutta kielten välillä on teknisiä eroja kontekstista riippuen.
Monissa kielissä, erityisesti C:n kaltaisissa kielissä, l-arvoilla on tallennusosoite , joka on ohjelmallisesti suoritettavan ohjelman käytettävissä (esimerkiksi käyttämällä &-osoitusoperaattoria C/C++:ssa). Tämä tarkoittaa, että l-arvot ovat muuttujia tai viittauksia tiettyihin muistialueisiin. R-arvot voivat olla l-arvoja (katso alla) tai ei-l-arvoja (termi, joka otetaan käyttöön erottamaan se l-arvoista). Otetaan esimerkiksi lauseke 4 + 9C-kielellä. Ajon aikana ohjelma luo arvon 13, mutta koska ohjelma ei määritä, missä nämä 13 ovat, lauseke ei ole l-arvo. Toisaalta, jos C-ohjelma ilmoittaa muuttujan x, jolle on annettu arvo 13, lausekkeen xarvo on 13 ja se on l-arvo.
Aluksi termi l-arvo merkitsi C-kielessä jotain, jolle voidaan antaa jotain (siis nimi, joka osoittaa, että se on osoitusoperaattorin vasemmalla (vasemmalla) puolella), mutta koska varattu sana const(vakio ) on on lisätty kieleen ), termi kuulostaa nyt "muokattavalta l-arvolta". C++11 : ssä on erityinen semanttinen glyfi &&"käytä lausekkeen osoitetta vain kääntäjällä"; eli käyttäjä ei voi laskea osoitetta &ohjelman suorituksen aikana. (katso liikkumisen semantiikka ).
Tämän tyyppistä viittausta voivat käyttää kaikki r-arvot, mukaan lukien sekä l-arvot että ei-l-arvot. Joillakin prosessoreilla on ohjeita, joilla on välitön arvo . Välitön arvo tallennetaan osana käskyä, joka tyypillisesti käyttää sitä sijoittamaan sen rekisteriin tai lisäämään tai vähentämään siitä. Muut ohjeen osat ovat opcode ja vastaanotin (rekisteri). Jälkimmäinen voi olla sanaton. Ei-välitön arvo voi olla rekisterissä tai muistissa, ja käskyn tulee sisältää arvon suora tai epäsuora osoite, kuten sen rekisterin indeksi, josta arvo on otettu.
L-arvo lausekkeena osoittaa objektiin[ määritä ] . Ei-muokattavalla (vakio) l-arvolla on osoite, mutta sitä ei voi muuttaa. Sitä vastoin muuttuvan l-arvon avulla voit paitsi hakea kohteen, myös määrittää sille eri arvon. R-arvo on mikä tahansa lauseke (mukaan lukien l-arvot), ja ei-l-arvo on mikä tahansa lauseke, joka ei ole l-arvo. Esimerkki ei-l-arvosta on välitön arvo, jolla ei ole osoitetta.
Arvo voi olla mitä tahansa saatavilla olevista tietotyypeistä : se voi olla merkkijono, numero tai yksi merkki.
Monet prosessorit tukevat useita välittömien arvojen kokoja, kuten 8 tai 16 bittiä, käyttämällä jokaiselle eri käskykoodeja. Jos ohjelmoija lisää arvon, joka ei sovi, kokoaja antaa "Out of range " -virheen . Useimmat kokoajat sallivat välittömät arvot ASCII- , desimaali- , heksadesimaali- , oktaali- tai binäärimuodoissa . Tämä tarkoittaa, että ASCII-merkki on identtinen arvon tai kanssa . Tekstimerkkijonojen tavujärjestys voi vaihdella prosessorin tyypin, kokoamisversion tai tietokoneen arkkitehtuurin mukaan. 'A'650x41