Nedefinovaná hodnota - Undefined value
![]() | tento článek potřebuje další citace pro ověření.Březen 2010) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Ve výpočetní technice (zejména v programování ), nedefinováno hodnota je stav, kdy výraz nemá správnou hodnotu, i když je syntakticky opravit. Nesmí být zaměňována s nedefinovanou hodnotou prázdný řetězec, booleovský „false“ nebo jiné „prázdné“ (ale definované) hodnoty. V závislosti na okolnostech může vést vyhodnocení k nedefinované hodnotě výjimka nebo nedefinované chování, ale v některých programovací jazyky nedefinované hodnoty mohou nastat během normálního, předvídatelného průběhu program provedení.
Dynamicky zadáno jazyky obvykle zacházejí s nedefinovanými hodnotami výslovně, pokud je to možné. Například, Perl má undef
operátor[1] který může „přiřadit“ takovou hodnotu proměnné. V jiných typech systémů může nedefinovaná hodnota znamenat neznámou, nepředvídatelnou hodnotu nebo pouze selhání programu při pokusu o jeho vyhodnocení. Typy s možnou hodnotou Null nabízejí střední přístup; vidět níže.
Příklady
Hodnota a částečná funkce není definováno, pokud je jeho argument mimo doména definice. Patří sem mnoho aritmetický případy jako dělení nulou, odmocnina nebo logaritmus a záporné číslo atd.; vidět NaN.
Dokonce i matematicky dobře definované výrazy jako exp (100000 ) nemusí být definováno v plovoucí bod aritmetika, protože výsledek je tak velký, že jej nelze vyjádřit. Pokud implementace podporuje ±∞, pak lze tuto hodnotu vypočítat jako + ∞ (inf
), nicméně.
Prvek z pole není definováno, když je jeho index mimo hranice, stejně jako hodnota v asociativní pole pro klíč, který neobsahuje.
Argument a variadická funkce který mu nebyl předán, je v těle funkce nedefinovaný.
A proměnná což není inicializováno má nedefinovanou (nebo nepředvídatelnou) hodnotu, dokud není přiřazeno.
Odkazy nulové ukazatele vést k nedefinovaným hodnotám a obvykle okamžitě vyvolat výjimku.
Jakýkoli výraz spodní typ je nedefinováno definicí, protože tento typ nemá žádné hodnoty.
Hodnota funkce, která smyčky navždy (například v případě selhání μ operátor v částečná rekurzivní funkce ) lze také považovat za nedefinované, ale má pouze teoretický význam, protože taková funkce nikdy se nevrátí.
Léčba
V jazyce Perl lze definici výrazu zkontrolovat pomocí predikátu definovaný(
expr)
.[2] Použití nedefinované hodnoty v Perlu je zcela bezpečné, je ekvivalentní s Nepravdivé v logickém kontextu (pod -li
atd.).
V takové staticky napsané jazyky jako C (C ++) neexistuje žádná konkrétní představa o hodnotě nedefinované za běhu. Aritmeticky nedefinované výrazy vyvolávají výjimky a havarují program, pokud nezachycen. Nedefinováno (znamená, nepředvídatelné) data v jazyce C a podobných jazycích se mohou objevit ve špatně navržených programech nebo v důsledku neočekávané poruchy a představují vážné nebezpečí, zejména ukazatele na uvolněná paměť a nulové ukazatele do polí nebo struktur. Dokonce i pokus o čtení hodnoty, na kterou odkazuje ukazatel na odpadky, může pád program.
![]() | Tato sekce potřebuje expanzi. Můžete pomoci přidávat k tomu. (Březen 2010) |
Nedefinovaná hodnota a typy s možnou hodnotou Null
Nullable datový typ vyhrazuje speciální nula
hodnota pro představování nedefinované hodnoty, takže nulová hodnota se stane druhem hodnoty; Všimněte si, že nedefinovaná hodnota obecně není. Na rozdíl od jazyků s dynamickým psaním, proměnná typu s možnou hodnotou Null (implementována v C# ) musí být před použitím inicializován.[3]
Zápis
v teorie vypočítatelnosti, nedefinovanost výrazu je označena jako expr↑ a definičnost jako expr↓.
Reference
- ^ "undef". Dokumentace Perl 5. 2009-09-25. Citováno 2010-03-26.
- ^ "definovaný". Dokumentace Perl 5. 2009-09-25. Citováno 2010-03-26.
- ^ "C # Nullable Numeric Data Types". Výukový program C # Fundamentals. Citováno 2010-03-27.
Viz také
- Definováno a nedefinováno (matematika)
- Null (SQL)