Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

 

 

Όπως λένε και τα παιδιά, το signature της συνάρτησης είναι

 

>int getchar ( void );

 

Επομένως τέλος της συζήτησης.

 

Γενικότερα όταν κάποιος σου λέει ότι η συνάρτησή μου επιστρέφει int και εσύ σκέφτεσαι να το αποθηκεύσεις αυτό σε char θα έπρεπε αυτομάτως να χτυπάνε συναγερμοί αεροπορικής επιδρομής μέσα στο κεφάλι σου. Το λιγότερο που θα έπρεπε να κάνεις σ' αυτή την περίπτωση είναι να διαβάσεις εξονυχιστικά το πώς συμπεριφέρεται η function και το τι επιστρέφει για να διαπιστώσεις για ποιό λόγο το signature λέει int και ανάλογα να δράσεις.

 

Απο κει και πέρα αυτό που φαντάζομαι ότι έγραφε ο imitheos είναι "προφανές": εφόσον η getchar επιστρέφει όλες τις πιθανές τιμές ενός char αλλά και μια επιπλέον τιμή "end of file", δε θα ήταν δυνατόν να γίνεται κάτι τέτοιο με return type που δεν είναι "μεγαλύτερο" του char.

 

Ariane 5

Ariane 5's first test flight (Ariane 5 Flight 501) on 4 June 1996 failed, with the rocket self-destructing 37 seconds after launch because of a malfunction in the control software. A data conversion from 64-bit floating point value to 16-bit signed integer value to be stored in a variable representing horizontal bias caused a processor trap (operand error) because the floating point value was too large to be represented by a 16-bit signed integer

 

Εντάξει, δεν υποννοώ ότι ένα πρόγραμμα 5 γραμμών που θα αντιγράψει ένας αρχάριος από ένα βιβλίο έχει ίδιες επιπτώσεις με αυτό απλά το αναφέρω ως παράδειγμα του τι γίνεται. Και προφανώς οι εν λόγω προγραμματιστές ήταν έμπειροι :)

Δημοσ. (επεξεργασμένο)

Όπως λένε και τα παιδιά, το signature της συνάρτησης είναι

 

>int getchar ( void );

 

Επομένως τέλος της συζήτησης.

 

Γενικότερα όταν κάποιος σου λέει ότι η συνάρτησή μου επιστρέφει int και εσύ σκέφτεσαι να το αποθηκεύσεις αυτό σε char θα έπρεπε αυτομάτως να χτυπάνε συναγερμοί αεροπορικής επιδρομής μέσα στο κεφάλι σου. Το λιγότερο που θα έπρεπε να κάνεις σ' αυτή την περίπτωση είναι να διαβάσεις εξονυχιστικά το πώς συμπεριφέρεται η function και το τι επιστρέφει για να διαπιστώσεις για ποιό λόγο το signature λέει int και ανάλογα να δράσεις.

 

Απο κει και πέρα αυτό που φαντάζομαι ότι έγραφε ο imitheos είναι "προφανές": εφόσον η getchar επιστρέφει όλες τις πιθανές τιμές ενός char αλλά και μια επιπλέον τιμή "end of file", δε θα ήταν δυνατόν να γίνεται κάτι τέτοιο με return type που δεν είναι "μεγαλύτερο" του char.

 

Και τέλος στο end of file η getchar δεν επιστρέφει -1 αλλά EOF (macro). Το γεγονός ότι το EOF τυχαίνει να έχει την τιμή -1 άρα θεωρούμε ότι EOF == -1 είναι κλασική περίπτωση λάθους. Σήμερα τυχαίνει, αύριο δεν τυχαίνει. Το documentation λέει EOF άρα και πάλι τέλος της συζήτησης.

 

Μη γίνεις αγύριστο κεφάλι γιατί ειδικά στον προγραμματισμό δε θα πας μπροστα. Φιλικά. :)

 

Φιλε αυτο εννοουσα και εγω οταν έγραφα αυτα που έγραφα. Οποιος δεν τα έχει μαζι μου (δεν ξερω ποσοι ειστε ακομη)

καταλαβε τι ηθελα να πω . Οι αριθμητικοι κωδικοι στο ASCII χωρις να χω διαβασει παπαγαλιες ειναι fixed . Αρα ο -1 δεν θα έχει που να μπει ειναι το 257ο στοιχειο που ΔΕΝ υπάρχει... επισης πουθενα δεν λεω οτι οι chars στην C και το ASCII έχουν καμια σχέση ελεος... μπες στο Ερωτησεις για C αμεσως και δες τι εγραψα και αρχισε ο αλλος να γράφει οτι πρεπει να με προσεχουν κτλπ... πραγματα για γελια δηλαδη που σοβαρος ανθρωπος δεν θα εγραφε. Αλλα αλλο ηθελε να κανει και οχι να συζητησει.

 

Ο ημιθεος ειναι σοφός και δεν εχει συνηθισει να του φερνουν αντιρησεις και επειδη καποιος διαφωνησε μαζι του ή δεν καταλαβε αμεσως τι εννοουσε θα πρεπει να του μιλησει περιεργα και να του κανει κριτικη οτι δεν καταλαβαινει τι διαβαζει. :P Αν κουραζεται που μπαινει εδω και βοηθαει καποιες φορες καλυτερα να το σταματησει παρα να ξηγιεται ετσι.

Να το εχουν υποψιν και αυτο οσοι του ζητησουν συμβουλες ή τους παραθεσει χωρις να του το ζητησουν οπως γινοταν και με μενα

Επεξ/σία από Star_Light

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...