2016-08-03 1 views
0

donc je regarde l'extrait de code suivantC++ et ++ opérateurs

int a = 3; 
int b = 2; 
b = a++; 
cout << ++b; 

Ma ligne de compréhension par ligne est:

  1. Initié a = 3
  2. Initié b = 2;
  3. affecter la valeur de (a + 1) à b, donc b = 4;
  4. impression b + 1, qui est 5.

Cependant cela est faux, quelqu'un peut-il expliquer cela en termes simples? Je suis nouveau à C++

+6

Vous confondez le pré-incrément et le post-incrément. 'a ++' et '++ a' ne sont pas les mêmes. Connexes: http://stackoverflow.com/questions/4445706/post-increment-and-pre-increment-concept –

Répondre

3

En C++ lorsqu'un incrément ou décrément est utilisé dans une expression, la position de "++" ou "-" questions. Si l'opérateur est devant une variable, alors l'incrément ou le décrément sera effectué avant la fin de l'expression, dans le cas contraire, l'incrément ou la décrémentation sera effectué après l'exécution de l'expression entière.

int b = ++a; // first add +1 to a, then assign a to b 
int b = a++; // assign a to b, then add +1 to a 
2

Ici, vous allez:

  • Initié a = 3
  • b = 2 Initié;
  • affecter la valeur de (a) à b, donc b = 3 et incrémenter a à 4;
  • impression b + 1, qui est 4.
+1

Il serait bon d'expliquer le préfixe vs postfix –

4

Dans la déclaration:

b = a++ 

a est évalué pour l'affectation à b et après que a est donc incrémenté pour a = a+1.

D'autre part:

b = ++a 

Incréments a si a = a+1avanta est ensuite évalué pour l'affectation à b.

Vous pouvez regarder profondément ici:

Pre-increment or post-increment in C/C++