bnvdarklord Δημοσ. 3 Απριλίου 2014 Δημοσ. 3 Απριλίου 2014 Ποια είναι(ή καλύτερα γιατι υπάρχει) η διαφορά αυτών των δύο εκφράσεων: x + (x > 5)?1:0; x + ((x > 5)?1:0); Παράδειγμα στον παρακάτω κώδικα: #include <iostream> using namespace std; int main() { int x = 10; int z = x + (x > 5)?1:0; int w = x + ((x > 5)?1:0); cout << "z = " << z << ",w = " << w << endl; x = 1; z = x + (x > 5)?1:0; w = x + ((x > 5)?1:0); cout << "z = " << z << ",w = " << w << endl; return 0; } Η έξοδος ειναι αυτή z = 1,w = 11 z = 1,w = 1 Τι συμβαίνει;
gon1332 Δημοσ. 3 Απριλίου 2014 Δημοσ. 3 Απριλίου 2014 Το δοκίμασες με gdb; EDIT: Δεν το είχα παρατηρήσει αυτό. Δεν είμαι σε linux για να τρέξω gdb τώρα. Αν μπορείς δοκίμασέ το μία. Αν είναι θα το κοιτάξω κι εγώ αργότερα.
lion2486 Δημοσ. 3 Απριλίου 2014 Δημοσ. 3 Απριλίου 2014 http://en.cppreference.com/w/cpp/language/operator_precedence o operator ? έχει χαμηλότερη προτεραιότητα από τον + οπότε γίνεται πρώτο.
gon1332 Δημοσ. 3 Απριλίου 2014 Δημοσ. 3 Απριλίου 2014 http://en.cppreference.com/w/cpp/language/operator_precedence o operator ? έχει χαμηλότερη προτεραιότητα από τον + οπότε γίνεται πρώτο. Σωστά. Σκάλωσα για κάποια στιγμή και έλεγα ότι αποκλείεται να γίνει η πρόσθεση με λογική τιμή (x<5) αλλά στη C/C++ δεν έχουμε boolean types. Τουλάχιστον δεν είναι strongly typed.
bnvdarklord Δημοσ. 3 Απριλίου 2014 Μέλος Δημοσ. 3 Απριλίου 2014 Ααα δηλαδή κοιτάει όλο αυτό x + (x > 5) αν δεν βάλω την παρενθεση. Ευχαριστώ.
defacer Δημοσ. 4 Απριλίου 2014 Δημοσ. 4 Απριλίου 2014 Σωστά. Σκάλωσα για κάποια στιγμή και έλεγα ότι αποκλείεται να γίνει η πρόσθεση με λογική τιμή (x<5) αλλά στη C/C++ δεν έχουμε boolean types. Τουλάχιστον δεν είναι strongly typed. Boolean type υπάρχει και στη C++ (bool) και στην ISO C (_Bool).
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα