Re: if in c

Top Page

Reply to this message
Author: Edgar Bonet
Date:  
To: Guilde
Subject: Re: if in c
Je disais :
> Euh... à ma connaissance seuls les opérateurs && et || te garantissent l'ordre
> d'évaluation.


Et Vincent Caron :
> Ops. Tu aurais un contre-exemple que je me le garde dans un coin de
> tee ?


Si tu calcules (i++ + i), tu sais que le compilateur va évaluer les opérandes
de l'addition (i++ et i) avant de faire l'addition, mais tu ne sais pas dans
quel ordre les opérandes seront évalués (le i++ de gauche avant le i de droite
ou le contraire). D'ailleurs, gcc -Wall dit « warning: operation on ‘i’ may be
undefined ».

Cherche sur le Web "C evaluation order sequence point".

Je me rectifie, il n'y a pas que && et || qui garantissent l'ordre, il y a
aussi les opérateurs , (virgule), ?: (ternaire), et () (appel de fonction). Et
bien sûr, l'ordre est garanti pour les séquences d'*instructions*.

Edgar.