Οδηγός Μελέτης - Εισαγωγή στον Προγραμματισμό

Α6.8 · Το πρόβλημα του dangling else

Διάλεξη 6: Εντολές και Ροή Ελέγχου, διαφάνεια 15 · Δυσκολία ★★☆ · trace · Κεφάλαια: 6

Πολλές εμφωλευμένες εντολές if μπορεί να οδηγήσουν σε προβλήματα αμφισημίας (κάτι που δεν μας αρέσει καθόλου στο computer science). Είναι τα δύο προγράμματα ισοδύναμα;

lab = -1;
if (year < 1)
    { /* empty block */ }
else if (year == 1)
    lab = 20;
else
    lab = 0;
lab = -1;
if (year <= 1)
    if (year == 1)
        lab = 20;
else
    lab = 0;

Υπόδειξη

Ο μεταγλωττιστής αγνοεί τη στοίχιση. Βρείτε σε ποια if ανήκει το else του δεύτερου προγράμματος σύμφωνα με τον κανόνα της C, ξαναγράψτε το με αγκύλες και συγκρίνετε τα δύο προγράμματα για year ίσο με 0, 1 και 2.

Αριθμός στον οδηγό: Α6.8 (στο κεφάλαιο) · Μόνιμο αναγνωριστικό: slides-lec06-dangling-else · Σύνδεσμος: https://progintro.github.io/study/questions/slides/slides-lec06-dangling-else.html · Markdown (GitHub)