Czy Excel ocenia oba argumenty wynikowe dostarczone do funkcji IF?
Excelif
funkcja przyjmuje trzy argumenty, warunek, wartość if-true i wartość if-false. Czy Excel oblicza wartość wszystkich trzech argumentów, czy tylko oblicza wartość warunku i odpowiadający mu wynik?
Wyjaśnienie: Nie zastanawiam się, cowynik zif
będzie, zastanawiam się, czy oblicza wartość wszystkich argumentów przed obliczeniem wyniku funkcji.
Jest to równoznaczne z pytaniem, czyif
funkcja używa oceny leniwej lub ścisłej. Na przykład następujący pseudokod:
<code>x = 5; print x>2 ? "Bigger" : "Smaller" + 1/0 </code>
rzuciłby wyjątek „dzielenie przez zero” w języku z całkowicie ścisłą oceną, ponieważ oceniłby1/0
, chociaż wynik nie byłby wymagany dla?:
operator.
W leniwym języku oceny?:
operator oceniłbyx>2
przed podjęciem decyzji, które wyrażenie ocenić.
Problem polega na tym, że w programie Excel1/0
wytwarza uzasadnioną wartość (co się zdarza#DIV/0!
), które mogą istnieć w wyrażeniach. Dlatego po prostu dzwoniąc=if(true,1,1/0)
nie pokazuje, czy Excel ocenia1/0
albo nie.