Θα πρέπει να είναι σαφές από την ίδια τη γλώσσα προγραμματισμού με ποιον τρόπο γίνεται η αποτίμηση μιας λογικής έκφρασης σε τέτοιες περιπτώσεις... γιατί τα πράγματα μπορεί να γίνουν κρίσιμα! Ειδικά, όταν υπάρχει περίπτωση στη 2η πρόταση μιας τέτοιας έκφρασης να προκληθεί overflow αν όντως αποτιμηθεί, όπως αναφέρεις, ή αντιθέτως ενώ θα πρέπει να γίνει κλήση ενός υποπρογράμματος (συνάρτησης) τελικά να μη συμβεί αυτό αν δεν αποτιμηθεί, κλπ.
Στο παρακάτω παράδειγμα θα έχουμε διαίρεση με το 0 ή όχι;
κ<-5
α<-0
Αν κ>=10 και κ/α >1 τότε ....
Στο παρακάτω παράδειγμα θα γίνει κλήση της συνάρτησης ή όχι;
α<-4
Αν α>=10 και υπολογισμός_βαθμού(α)>12 τότε ....
Ο τρόπος αποτίμησης των λογικών εκφράσεων, όπου δεν γίνεται αποτίμηση της 2ης πρότασης αν το αποτέλεσμα έχει ήδη κριθεί από την 1η πρόταση, αποτελεί συγκεκριμένο χαρακτηριστικό πολλών γλωσσών προγραμματισμού και αποκαλείται
short-circuit evaluation.
Σε κάποιες γλώσσες αυτό το χαρακτηριστικό δεν υποστηρίζεται και οι λογικοί τελεστές αποτιμούν κανονικά όλες τις προτάσεις μιας λογικής έκφρασης, π.χ. fortran, vb.
Σε κάποιες άλλες το short-circuit evaluation είναι ο μόνος τρόπος αποτίμησης των λογικών εκφράσεων, π.χ. C, C++.
Στις πιο σύγχρονες γλώσσες (π.χ. σε Java, Perl, PHP, Python, Ruby, VB.NET) υποστηρίζονται και οι δύο τρόποι υπολογισμού χρησιμοποιώντας διαφορετικούς τελεστές, για παράδειγμα με τους τελεστές and και andalso, or και orelse.
Βλ.
http://en.wikipedia.org/wiki/Short-circuit_evaluationΑφού λοιπόν στο βιβλίο δεν αναφέρεται τίποτα σχετικό, εμείς θα πρέπει να θεωρήσουμε ότι ΔΕΝ γίνεται short-circuit evaluation, δηλαδή όλες οι προτάσεις αποτιμούνται κανονικά!