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*.