bxenos Δημοσ. 25 Μαΐου 2009 Δημοσ. 25 Μαΐου 2009 decimal τιμή που μου εμφανίζει ο debugger είναι -938432448 και στη δεύτερη -938432384. ξέρεις τι είναι αυτό; είναι το 0xFFFFFFFFC810A840 δηλαδή είναι ΣΩΣΤΟ, αλλά έχεις πρόβλημα στο cast. Υποθέτω ότι έχει γίνει μετατροπή μεσω 64bit integer. (αν θυμάσε είχα πεί να χρησιμοποιήσεις unsigned και όχι int, το πρόσιμο έβγαλε το 0xffffffff στην αρχή. Υπάρχουν εσωτερικές μετατροπές μεταξύ signed Τυπων ) ---------- Το μήνυμα προστέθηκε στις 18:08 ---------- Βάλε αυτόν τον κώδικα: > float int2float(int n,int *intp,float *floatp) { int i; for(i=0;i<n;i++){ unsigned u = ((unsigned *)intp)[i]; floatp[i] = *((float*)&u); } return XXXX <<< δεν έχεις γράψει τι πρεπει να επιστρεφει η συναρτηση σου την οποία έχεις //δηλώσει να επιστρέφει float!!!! } Δουλευει σωστά και με 32 και με 64 bit ---------- Το μήνυμα προστέθηκε στις 18:11 ---------- (float) *var αυτό είναι λάθος! θέλει *(float *)var (αν το var είναι int*)
Dr.Fuzzy Δημοσ. 25 Μαΐου 2009 Μέλος Δημοσ. 25 Μαΐου 2009 Έχεις δίκιο. Έβαλα unsigned int και έκανα cast τον pointer σε float και δουλεύει!!!!!!! Το κέρατο μου μέσα. Τόση ώρα για μια μ@λ@κί@. Ευχαριστώ πάντως για όλα (και για την ταλαιπωρία που σε έβαλα...)
bxenos Δημοσ. 25 Μαΐου 2009 Δημοσ. 25 Μαΐου 2009 βασικός κανόνας στον προγραμματισμό: οι μικρές @@ριες δημιουργούν μεγάλους μπελάδες!!!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.