C/C++ compiler ερώτηση

Theodore Lytras thlytras at gmail.com
Sat Jun 23 09:50:41 EEST 2012


Καλησπέρα στη λίστα,

θα ήθελα να κάνω μια ερώτηση, δε ξέρω αν είναι αυτονόητη, απλά ήθελα να είμαι 
σίγουρος.

Σε ένα λογικό έλεγχο της μορφής: 
if (A && B) { blabla(); }
μπορώ να είμαι σίγουρος οτι το A θα ελεγχθεί πάντα πριν από το B, και οτι αν 
το A είναι ψευδές το B δε θα ελεγχθεί καθόλου???

Αντίστοιχα μπορώ να είμαι σίγουρος για το:
if (A || B) { blabla(); }
οτι αν το A είναι αληθές το B δε θα ελεγχθεί καθόλου?

Είναι αυτή η στάνταρ συμπεριφορά όλων των C/C++ compiler??

Το background της ερώτησης: μπορώ να είμαι σίγουρος οτι το παρακάτω δε θα 
κάνει ποτέ segfault?

class Foo {
public:
   bool isSomething() const;
}

Foo* f = 0;
....  // various commands processing f
if (f && f->isSomething()) { blabla(); }

Κάθε άλλη "στυλιστική" παρατήρηση είναι ευπρόσδεκτη...

Ευχαριστώ,
Θοδωρής

-- 
"Beauty is transitory."
"Beauty survives."
        --  Mr. Spock & Capt. Kirk, "That Which Survives", stardate unknown
by Theodore Lytras <thlytras at gmail.com>


More information about the Linux-greek-users mailing list