Tutoriel C sucre syntaxique

incrémentation/décrémentation préfixée et suffixée

a marqué ce sujet comme résolu.

Bonjour,

je ne saisie pas la différence entre les formes préfixées et suffixées du sucre syntaxique de l’incrémentation/décrémentation de variables. J’ai écris un petit exemple en C

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#include<stdio.h>
int main(void) {
    int a =5;
    int b = 10;
    printf("a= %d\n", a);
    printf("b= %d\n", b);
    printf("++b = %d\n", ++b);
    printf("--a = %d\n", --a);
    printf("b++ = %d\n", b++);
    printf("a-- = %d\n", a--);
    return 0;
}

La compilation avec zcc fonctionne et à l’exécution du programme les valeurs sont identiques que la forme soit préfixée ou suffixée. Malheureusement le tuto n’est pas très clair sur le sujet car je n’ai vraiment pas compris la différence. Par avance je vous remercie d’éclairer ma lanterne.

Salut,

C’est normal, pour bien voir la différence il faut partir avec les mêmes valeurs de a et b dans les deux cas :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#include<stdio.h>
int main(void) {
    int a =5;
    int b = 10;
    printf("a= %d\n", a);
    printf("b= %d\n", b);
    printf("++b = %d\n", ++b);
    printf("--a = %d\n", --a);

    a =5;   // On réinitialise a
    b = 10; // On réinitialise b
    printf("b++ = %d\n", b++);
    printf("a-- = %d\n", a--);
    return 0;
}

(++a) c’est u sucre syntaxique pour (a+=1).

(a++) c’est du sucre syntaxique pour (t=a,a+=1,t) avec t de même type que a.

L’expression (++a) a pour valeur, la nouvelle valeur de a.
Alors que l’expression (a++) a pour valeur l’ancienne expression de a.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte