46 votes

Quelle est la différence entre les opérateurs préfixe et postfixe ?

Le code suivant imprime une valeur de 9. Pourquoi ? Ici, return(i++) renverra une valeur de 11 et en raison de --i la valeur devrait être 10 elle-même, quelqu'un peut-il expliquer comment cela fonctionne ?

 #include<stdio.h>
main()
{
    int i= fun(10);
    printf("%d\n",--i);
}

int fun (int i)
{
    return(i++);
}

15voto

Dilu Thankachan Points 151

Préfixe:

 int a=0;

int b=++a;          // b=1,a=1 

avant l'affectation, la valeur de sera incrémentée.

suffixe :

 int a=0;
int b=a++;  // a=1,b=0 

attribuez d'abord la valeur de 'a' à 'b' puis incrémentez la valeur de 'a'

7voto

loganfsmyth Points 25483

En fait, return (i++) ne renverra que 10.

Les opérateurs ++ et -- peuvent être placés avant ou après la variable, avec des effets différents. S'ils sont avant, alors ils seront traités et retournés et essentiellement traités comme (i-1) ou (i+1), mais si vous placez le ++ ou -- après le i, alors le retour est essentiellement

 return i;
i + 1;

Il renverra donc 10 et ne l'incrémentera jamais.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X