2017-09-13 2 views
-6

Peut-être que je suis absent dehors mais je ne peux pas comprendre pourquoi je reçois le résultat 2 dans ce code:Je ne peux pas comprendre pourquoi suis-je obtenir le résultat 2

i = 1; 
i = i-- - --i; 
System.out.println(i); 
+4

C'est exact, qu'attendez-vous? – Mritunjay

+0

J'ai vu cela dans une question java. Mais dans la vraie vie, c'est très fortement une très mauvaise pratique de le faire. Il vaut mieux écrire plus simple pour être compréhensible pour tout le monde. –

+0

Pourquoi pas vous? Vous * décrémentez "i" deux fois. Et tu ne devrais jamais faire ça. – dhke

Répondre

3

En i = i-- - --i vous avez :

  • i--, un post-décrément, qui récupère la valeur courante de i (1) et décrémente alors i-0
  • -
  • --i, un pré-décrément, qui décrémente i à nouveau et récupère la valeur actualisée, -1

Alors vous vous retrouvez avec i = 1 - -1 qui est 2.


Inutile de dire que ce genre de chose apparaît sur les tests de Java (stupide) et autres, mais ne doit jamais apparaître dans le code de production.

+0

Je ne peux pas croire que je n'ai pas attrapé ceci, merci pour l'aide. – Antonio