antemar Δημοσ. 7 Ιουνίου 2008 Δημοσ. 7 Ιουνίου 2008 Γιατί το αποτέλεσμα του κώδικα είναι 22,13,13,13? int a=10,b; b=a++ + ++a; printf("%d,%d,%d,%d",b,a++,a,++a);
unre@l Δημοσ. 7 Ιουνίου 2008 Δημοσ. 7 Ιουνίου 2008 Διότι δεν έγραψες στο http://www.google.com για "C operators reference" και δεν πάτησες "Αισθάνομαι τυχερός". καλό διάβασμα!
myle Δημοσ. 7 Ιουνίου 2008 Δημοσ. 7 Ιουνίου 2008 >myle@myle:~/Desktop/untitled folder$ gcc -Wall asdf.c -o asdf asdf.c: In function ʽmainʼ: asdf.c:4: warning: operation on ʽaʼ may be undefined asdf.c:5: warning: implicit declaration of function ʽprintfʼ asdf.c:5: warning: incompatible implicit declaration of built-in function ʽprintfʼ asdf.c:5: warning: operation on ʽaʼ may be undefined asdf.c:5: warning: operation on ʽaʼ may be undefined myle@myle:~/Desktop/untitled folder$ ./asdf 22,13,14,14 Με gcc 4.2 Όσον αφορά τα υπόλοιπα απαντήθηκαν ήδη.
antemar Δημοσ. 7 Ιουνίου 2008 Μέλος Δημοσ. 7 Ιουνίου 2008 Παιδιά ευχαριστώ για την ανταπόκριση αλλά δυστυχώς εξακολουθώ να μην το κατανοώ. Αν μπορεί κάποιος να γίνει πιο αναλυτικός θα το εκτιμούσα πολύ.
khykhy Δημοσ. 7 Ιουνίου 2008 Δημοσ. 7 Ιουνίου 2008 Στη παράσταση b= οι πράξεις εκτελούνται από τα αριστερά στα δεξιά το a++ επιστρέφει τιμη 10 αλλα κάνει το a 11. To δευτερο ++a επιστρέφει 12 (μετά την άυξηση) και κάνει το a 12 Επομένως στο b θα καταχωριστεί το 10+12 δηλαδή το 22 Στην prntf τα ορίσματα υπολογίζονται από τα δεξιά στα αριστερά το ++a κάνει το a 13 και επιστρέφει 13, το σκετο a φυσικά επιστρέφει 13 και τέλος το a++ κάνει το a 14 αλλα επιστρέφει 13 (πρίν από την αύξηση).
bilco Δημοσ. 8 Ιουνίου 2008 Δημοσ. 8 Ιουνίου 2008 Στην prntf τα ορίσματα υπολογίζονται από τα δεξιά στα αριστερά Δεν καθορίζεται από το πρότυπο (και της C και της C++) η σειρά με την οποία υπολογίζονται τα ορίσματα. Η συμπεριφορά είναι απροσδιόριστη (όπως προειδοποιεί πιο πάνω o compiler του myle). Το ίδιο συμβαίνει και όταν τελεστές αύξησης (ή μείωσης) εμφανίζονται επαναληπτικά σε μια έκφραση για την ίδια μεταβλητή.
Επισκέπτης Δημοσ. 8 Ιουνίου 2008 Δημοσ. 8 Ιουνίου 2008 Ρίξε μια ματιά στο παρακάτω link: http://groups.google.com/group/comp.lang.c/browse_thread/thread/180f6f08ac544ad2/c4bc8a42da538ea3?lnk=gst&q=charpour
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.