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

Theodore Lytras thlytras at gmail.com
Sat Jun 23 11:55:57 EEST 2012


Στις Σαβ 23 Ιουν 2012, ο/η Christos Ricudis έγραψε:
> On 06/23/2012 09:50 AM, Theodore Lytras wrote:
> > Καλησπέρα στη λίστα,
> > 
> > θα ήθελα να κάνω μια ερώτηση, δε ξέρω αν είναι αυτονόητη, απλά ήθελα να
> > είμαι σίγουρος.
> > 
> > Σε ένα λογικό έλεγχο της μορφής:
> > if (A&&  B) { blabla(); }
> > μπορώ να είμαι σίγουρος οτι το A θα ελεγχθεί πάντα πριν από το B, και οτι
> > αν το A είναι ψευδές το B δε θα ελεγχθεί καθόλου???
> > 
> > Αντίστοιχα μπορώ να είμαι σίγουρος για το:
> > if (A || B) { blabla(); }
> > οτι αν το A είναι αληθές το B δε θα ελεγχθεί καθόλου?
> 
> Στην C τουλαχιστον, για τους || και && operators, αυτη η συμπεριφορα
> ειναι μερος του προτυπου :
> 
>     Unlike the bitwise binary & operator, the && operator guarantees
> left-to-right evaluation; there is a sequence point after the
> evaluation of the first operand.  If the first operand compares equal
> to 0, the second operand is not evaluated.
> 
>     Unlike the bitwise | operator, the || operator guarantees
> left-to-right evaluation; there is a sequence point after the
> evaluation of the first operand.  If the first operand compares
> unequal to 0, the second operand is not evaluated.
> 
> (http://flash-gordon.me.uk/ansi.c.txt 3.3.13, 3.3.24).
> 
> Γι αυτο το λογο, μπορεις να γραψεις αφοβα πραγματα οπως
> 
> if (karoto && karoto->color==COL_ORANGE) ...
> 
> χωρις να φοβασαι null pointer dereferences.

Τέλεια! Σας ευχαριστώ και τους δυό!

-- 
"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