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 April 2017 2017 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).
OdpowiedzW 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 April 2017 2017 15:21
czy ja wiem is tak w obu przypadkach trzeba obsłużyć wyjątek komendą
Odpowiedz"podetrzyj się ręką"
Nie trzeba wyjątków... Wystarczy najpierw sprawdzić czy jest papier. Głupio ładować się w taki "wyjątek".
aha
Odpowiedz