Re: if in c

Pàgina inicial

Reply to this message
Autor: Vincent Caron
Data:  
A: Guilde
Assumpte: Re: if in c
On Fri, 2011-06-10 at 11:30 +0100, Patrick Dupre wrote:
> Bonjour,
>
> Question de c.
> Dans un if avec un operateur "and" ou "or", est-ce que je peux etre
> sur que l'execution du premier membre est effectue avant le second
> membre ?
> En d"autre termes, est-ce que si j'ai
> if ((condition a) && (condition b))


Oui, les conditions sont toujours évaluées de gauche à droite. Tout
'statement' de manière générale l'est.


> avec (condition a) false, je peux-etre sur que la condition b n'est pas
> executee ?


Oui, également.

Je n'ai pas de copie de l'ISO C99 pour citer les bons chapitres, mais
il est tout à fait courant d'utiliser ceci:

if (ptr != NULL && ptr->foo == 42) { ... }

Qui crasherait si les 2 conditions que tu cites n'étaient pas vrai.