2013-07-29 3 views
1

j'ai essayé de calculer ce que i=i*++i donc i=56*57 qui me donne 3192, mais mon programme dit la valeur est 2162:précédence des opérateurs

class Demo { 
    public static void main(String args[]) { 
     short i=056; 
     i*=++i; 
     System.out.println(i); 
    } 
} 
+0

Qu'est-ce qui vous intéresse - 'i = i * ++ i' ou' i * = ++ i'? –

+0

Enlever le '0 'de' 056', alors vous remarquerez quelque chose et probablement obtenir la réponse. –

Répondre

8

Le problème est avant la multiplication - il est ici:

short i=056; 

C'est un octal littéral, avec la valeur décimale 46. Donc, vous obtenez réellement les résultats de 46 * 47, qui est en effet 2162.

Je voudrais fortement cependant vous conseille de ne pas utiliser le code comme i *= ++i cependant. Il est plus simple pour toutes les personnes concernées d'utiliser i *= i + 1. Je vous conseille également de ne pas utiliser de littéraux octaux.

+0

Je conseille fortement de ne pas utiliser de littéraux octaux! – Gabe

+0

@Gabe: Cela fait environ 30 secondes :) –

Questions connexes