Bonjour à tous,
Je suis tombé sur quelques choses d'assez curieux:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #include <iostream> #include <string> using std::cout; using std::endl; int main() { int i = 0; int j; j = ++i; j = ++i; j = ++i; cout << "valeur de i: " << i <<endl; cout << "valeur de j: " << j <<endl; /*Affiche bien 3 et 3 */ }Comment se fait t'il que j'ai deux résultats différents ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #include <iostream> #include <string> using std::cout; using std::endl; int main() { int i = 0; int j; j = ++i; j = i++; j = i++; cout << "valeur de i: " << i <<endl; cout << "valeur de j: " << j <<endl; /*Affiche 3 et 2*/ }
D'après le livre que je possède il explique que mon opérateur d'incrémentation à deux forme: une préfixe et postfixe.
Lors d'un préfix, pour une lvalue, il ajoute 1 et change la valeur modifiée par l'opérande.
Dans le cas d'un postfix, pour une rvalue, il ajoute 1 et renvoie une copie de la valeur originale.
Avez-vous d'autres choses à rajouter sur ce sujet ?
Partager