« Programmation C/Opérateurs » : différence entre les versions

Contenu supprimé Contenu ajouté
Tados (discussion | contributions)
Ligne 143 :
C'est un concept quelque peu sibyllin du C. Incrémenter ou décrémenter de un est une opération extrêmement courante. Écrire à chaque fois '<code>variable = variable + 1</code>' peut-être très pénible à longue. Le langage C a donc introduit des opérateurs raccourcis pour décrémenter ou incrémenter n'importe quel type atomique (gérable directement par le processeur : c'est à dire pas un tableau, ni une structure ou une union). Il s'agit des opérateurs '<code>++</code>' et '<code>--</code>', qui peuvent être utilisés de manière préfixée ou postfixée (avant ou après la variable).
 
Utilisé de manière préfixée, l'opérateur incrémente/décrémente la variable, puis retourne la valeur incrémentéede celle-ci. En fait, tandisles qu'utiliséexpressions de<code>(++E)</code> manièreet postfixée<code>(--E)</code> l'opérateursont retourneéquivalentes larespectivement valeuraux expressions <code>(E+=1)</code> originaleet :<code>(E-=1)</code>.
 
Par contre, utilisé de manière postfixée, l'opérateur retourne la valeur originale avant de modifier la valeur de la variable.
 
<source lang="c">
int i = 0, j;
 
j = i++; /* j vaut 0 et i vaut 1 */
j = --i; /* j vaut 0-1 et i vaut 0-1 */
</source>
 
ÀIl est important de noter que le langage ne garantitfait que lagarantir qu'une variable post-incrémentée n'auraou post-décrémentée acquiert sa nouvelle valeur quentre le résultat de l'uneopérateur foiset le prochain point de séquencement atteint (généralement la fin d'une instruction). Mais on ne sais pas vraiment quand. Ainsi, si l'objet sur lequel s'applique un tel opérateur apparaît plusieurs fois avant un point de séquencement, alors le résultat est imprévisible. Le code qui suit est '''imprévisible''' et son comportement peut changer simplement en changeant les options d'un même compilateur&nbsp;:
 
{{Erreur volontaire|nombre=3}}