Δημοσιεύτηκε: 04 Μαρ 2012, 03:44
από migf1
Ilias95 έγραψε:
migf1 έγραψε:Και το casting σε (int) είναι περιττό

Όχι (σύμφωνα με τον King :P ).
Η sizeof() επιστρέφει unsigned int. Μέσα στον κώδικα μου όμως θα κάνω σύγκριση της σταθεράς με κάποιον signed int.
Στην προκειμένη περίπτωση δεν θα υπάρχει πρόβλημα καθώς η sizeof δεν υπάρχει περίπτωση να επιστέψει αρνητική τιμή.
Όμως κάποιοι compilers είναι πιθανόν να παραπονεθούν.

Είναι περιττό να το συμπεριλάβεις μέσα στο macro... όταν θέλεις να κάνεις casting θα το κάνεις απευθείας στον κώδικά σου. Π.χ. αν θες να κάνεις cast το αποτέλεσμα του NUM_CHARS σε (long int) και όχι σε (int), τότε έτσι όπως το έχεις θα γίνει πρώτα cast σε int (θα γίνει δηλαδή truncate) και μετά ο int θα γίνει upgrade σε (long int).

Ενώ έτσι όπως σου είπα (χωρίς το casting μέσα στο macro δηλαδή) είσαι ελεύθερος να το κάνεις cast σε όποιον τύπο θέλεις, χωρίς να ρισκάρεις να χάσεις τιμές κατά τη διαδικασία.