wazomania Δημοσ. 10 Νοεμβρίου 2009 Δημοσ. 10 Νοεμβρίου 2009 Έστω SIZE μια καθολική σταθερά 100 και Α ένας πίνακας μεγέθους SIZE στον οποίο υπάρχουν αποθηκευμένα n στοιχειά από αριστερά προς τα δεξιά. Αν ο πίνακας δεν έχει αρχικοποιηθεί και στις n πρώτες θέσεις του υπάρχουν οι αριθμοί 1 έως n σε αύξουσα σειρά, τότε τι θα εκτυπώσει η ακόλουθη εντολή for(i=0; i<SIZE; i++) printf("%d, " A); με προβληματίζει που δεν έχει , μετά τα "..."
Anubis13 Δημοσ. 10 Νοεμβρίου 2009 Δημοσ. 10 Νοεμβρίου 2009 Δεν είμαι σίγουρος αν καταλαβαίνω καλά την εκφώνηση 1, 2, 3, 4, ... 100
C6WGMN Δημοσ. 10 Νοεμβρίου 2009 Δημοσ. 10 Νοεμβρίου 2009 σε αυτήν την μορφή θα απαντούσες ότι υπάρχει constraint violation σε επίπεδο semantics, και ο compiler είναι υποχρεωμένος να διαγνώσει τουλάχιστον ένα μήνυμα πίσω στον χρηστη. Αν υποθέσεις ότι το λάθος δεν έγινε επίτηδες, δεν είναι ξεκάθαρο αν εννοούσε > printf("%d,", A[i]); η > printf("%d",A[i]); και έτσι δεν χρειάζεται καν να απαντήσεις την ερώτηση, απλός κανε παράπονα στον καθηγητή σου.
Crizzt Δημοσ. 10 Νοεμβρίου 2009 Δημοσ. 10 Νοεμβρίου 2009 Το κομμα ειναι μερος του string που τυπωνεται με καθε iteration του for. Αρα το output ειναι: 1, 2, 3, 4, ... 100
parsifal Δημοσ. 10 Νοεμβρίου 2009 Δημοσ. 10 Νοεμβρίου 2009 Οι θέσεις του πίνακα που δεν έχουν αρχικοποιηθεί (μετά τη n-1) περιέχουν απροσδιόριστες τιμές. Άρα, ακόμη κι αν θεωρηθεί ότι η εντολή εντός του βρόχου δεν είναι σκοπίμως λανθασμένη συντακτικά και έπρεπε να δοθεί ως εξής: >printf("%d, ", A[i]); ...το output δε μπορεί να είναι κάτι διαφορετικό από το παρακάτω: >1, 2, ..., n, [τυχαίος_αριθμός_1], [τυχαίος_αριθμός_2], ..., [τυχαίος_αριθμός_100-n]
Anubis13 Δημοσ. 11 Νοεμβρίου 2009 Δημοσ. 11 Νοεμβρίου 2009 @parsifal: αυτό είναι γενικό η έτσι πάει? Γιατί ο βρόχος εκτελείται 100 φορές.
parsifal Δημοσ. 11 Νοεμβρίου 2009 Δημοσ. 11 Νοεμβρίου 2009 Γενικό είναι. Στην ISO C, η πρόσβαση σε μεταβλητές που δεν έχουν αρχικοποιηθεί οδηγεί σε απροσδιόριστη συμπεριφορά. Στην περίπτωση ενός στατικού array, η συμπεριφορά αυτή εκδηλώνεται ως τυχαίες τιμές που παίρνουμε κατά την ανάγνωση. Σύμφωνα με την εκφώνηση όμως, στις n πρώτες θέσεις του πίνακα έχουν δοθεί τιμές. Άρα, οι επόμενες είναι που έχουν το «πρόβλημα». Στην πράξη, πρόγραμμα που θα προκύψει από τον παραπάνω κώδικα εκτελείται κανονικά (κάποια IDEs μπορεί να προειδοποιήσουν ότι επιχειρείται πρόσβαση σε θέσεις μνήμης που δεν έχουν αρχικοποιηθεί). Απλά, το output είναι προβλέψιμο μόνο μέχρι τη n-οστή θέση του πίνακα.
pinball_elf Δημοσ. 11 Νοεμβρίου 2009 Δημοσ. 11 Νοεμβρίου 2009 http://www.insomnia.gr/forum/showthread.php?t=340970
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.