nie do końca... w wielu j. programowania null(ptr)/NULL/nul/nil jest jak najbardziej tożsame z zerem. Różnica może dopiero pojawić się w tedy, gdy dany język ma silne typowanie i null posada swój własny typ - C++11: std::nullptr_t; C#: System.Nullable; Java: jako Object, choć dla Javy null jest dość złożonym zagadnieniem; Python: if X is None; ... Oczywiście wymienione przykłady posiadają pewne uogólnienie, a ich rzeczywiste stosowanie dodatkowe obostrzenie czy możliwości. Summa summarum, niezależnie od abstrakcji języka i jego sposobu wykonania, tak dla kodu bajtowego jak i maszynowego, praktycznie w każdym przypadku null jest zastępowane zerem (tu należy zaznaczyć, że wszystko zależy od kontekstu generowanego kodu; jeśli jest to np. jedynie porównanie 'is null' wygenerowany kod niekoniecznie musi zawierać samo porównanie jeśli kompilator dokonał odpowiedniej optymalizacji lub kontekst gramatyki języka stanowił inaczej).
W bazach danych NULL oznacza "nieokreślony". Wykorzystuje się go w logice trójwartościowej, w której przyjmuje wartość 0,5 (czyli pół, 0 - false i 1 - true). Natomiast w JavaScript, oprócz null istnieje jeszcze undefined. Może warto zrobić o tym demot? :)
"dla kodu bajtowego jak i maszynowego, praktycznie w każdym przypadku null jest zastępowane zerem" - W znacznej większości przypadków w 3GL null nie jest zastępowany zerem w kodzie bajtowym/maszynowym.
OdpowiedzKomentuj obrazkiem
Zmodyfikowano
1 raz.
Ostatnia modyfikacja:
14 kwietnia 2017 o 15:21
nie do końca... w wielu j. programowania null(ptr)/NULL/nul/nil jest jak najbardziej tożsame z zerem. Różnica może dopiero pojawić się w tedy, gdy dany język ma silne typowanie i null posada swój własny typ - C++11: std::nullptr_t; C#: System.Nullable; Java: jako Object, choć dla Javy null jest dość złożonym zagadnieniem; Python: if X is None; ... Oczywiście wymienione przykłady posiadają pewne uogólnienie, a ich rzeczywiste stosowanie dodatkowe obostrzenie czy możliwości. Summa summarum, niezależnie od abstrakcji języka i jego sposobu wykonania, tak dla kodu bajtowego jak i maszynowego, praktycznie w każdym przypadku null jest zastępowane zerem (tu należy zaznaczyć, że wszystko zależy od kontekstu generowanego kodu; jeśli jest to np. jedynie porównanie 'is null' wygenerowany kod niekoniecznie musi zawierać samo porównanie jeśli kompilator dokonał odpowiedniej optymalizacji lub kontekst gramatyki języka stanowił inaczej).
W bazach danych NULL oznacza "nieokreślony". Wykorzystuje się go w logice trójwartościowej, w której przyjmuje wartość 0,5 (czyli pół, 0 - false i 1 - true). Natomiast w JavaScript, oprócz null istnieje jeszcze undefined. Może warto zrobić o tym demot? :)
"dla kodu bajtowego jak i maszynowego, praktycznie w każdym przypadku null jest zastępowane zerem" - W znacznej większości przypadków w 3GL null nie jest zastępowany zerem w kodzie bajtowym/maszynowym.
Zmodyfikowano 1 raz. Ostatnia modyfikacja: 14 kwietnia 2017 o 15:21
czy ja wiem is tak w obu przypadkach trzeba obsłużyć wyjątek komendą
"podetrzyj się ręką"
Nie trzeba wyjątków... Wystarczy najpierw sprawdzić czy jest papier. Głupio ładować się w taki "wyjątek".
aha