zynif Δημοσ. 1 Νοεμβρίου 2013 Δημοσ. 1 Νοεμβρίου 2013 #ifndef MAIN_H #define MAIN_H #include "math.h" #endif // MAIN_H double LogZwei(double a) { if (a>0) { return log(a)/log(2.0d); } else { return 0.0d; } } Γιατί μου χτυπάει το παραπάνω σε C++ ;
migf1 Δημοσ. 1 Νοεμβρίου 2013 Δημοσ. 1 Νοεμβρίου 2013 Από όσο θυμάμαι, στη C/C++ δεν υπάρχει επίθεμα d (ή D). Δεκαδικές σταθερές χωρίς επίθεμα εννοείται πως είναι double. Άσχετο, μετά από return το else είναι περιττό... double LogZwei( double a ) { if (a > 0) { return log(a) / log(2.0); } return 0.0; } 1
geo1st487 Δημοσ. 1 Νοεμβρίου 2013 Δημοσ. 1 Νοεμβρίου 2013 Από όσο θυμάμαι, στη C/C++ δεν υπάρχει επίθεμα d (ή D). Δεκαδικές σταθερές χωρίς επίθεμα εννοείται πως είναι double. Άσχετο, μετά από return το else είναι περιττό... double LogZwei( double a ) { if (a > 0) { return log(a) / log(2.0); } return 0.0; } Και τα αγκιστρα στην if ειναι περιττα... double LogZwei( double a ) { if (a > 0) return log(a) / log(2.0); return 0.0; }
migf1 Δημοσ. 1 Νοεμβρίου 2013 Δημοσ. 1 Νοεμβρίου 2013 Yeap, αλλά η ύπαρξή τους κάνει safeguard σε περίπτωση που θελήσουμε να προσθέσουμε αργότερα κι άλλες γραμμές μέσα στο if. Θεωρείται καλή πρακτική να τα βάζουμε πάντα (αν κι εγώ το παραβιάζω ενίοτε). 2
Star_Light Δημοσ. 1 Νοεμβρίου 2013 Δημοσ. 1 Νοεμβρίου 2013 Yeap, αλλά η ύπαρξή τους κάνει safeguard σε περίπτωση που θελήσουμε να προσθέσουμε αργότερα κι άλλες γραμμές μέσα στο if. Θεωρείται καλή πρακτική να τα βάζουμε πάντα (αν κι εγώ το παραβιάζω ενίοτε). Kαι εγω το παραβιαζα ενιοτε. Ο λογος ειναι οτι αισθανομαι αισθητικα και στο ματι οτι ο κωδικας ειναι πιο λιτος και ευαναγνωστος. Και στην τελικη αμα θες βαζεις τις αγκυλες μετα που το προβλημα? Στον MinGW παντως τα βάζει αυτοματα.
migf1 Δημοσ. 1 Νοεμβρίου 2013 Δημοσ. 1 Νοεμβρίου 2013 Το πρόβλημα είναι πως σε μεγάλα και φωλιασμένα if-else χωρίς αγκύλες, αν θελήσουμε αργότερα να τους προσθέσουμε statements είναι επίφοβο το να ξεχάσουμε να προσθέσουμε και τις αγκύλες (ειδικά αν είμαστε κουρασμένοι, κι ειδικά αν τις προσθήκες των statements τις κάνουμε με copy & paste από άλλα σημεία του κώδικα... μας ξεγελάει το ότι τα στοιχίζουμε σωστά μέσα στα if-else μετά την προσθήκη και ξεχνάμε να βάλουμε και τις αγκύλες).
zynif Δημοσ. 1 Νοεμβρίου 2013 Μέλος Δημοσ. 1 Νοεμβρίου 2013 Τελικά μάλλον χτύπαγε επειδή είχα βάλει την συνάρτηση μέσα στην main.h
παπι Δημοσ. 1 Νοεμβρίου 2013 Δημοσ. 1 Νοεμβρίου 2013 #ifndef MAIN_H #define MAIN_H #include "math.h" #endif // MAIN_H double LogZwei(double a) { if (a>0) { return log(a)/log(2.0d); } else { return 0.0d; } } Γιατί μου χτυπάει το παραπάνω σε C++ ; Τι σου χτυπαει; Φραπεδακι;
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα