analyser long de nombre négatif

code:

public class Main{
    public static void main(String[] a){
        long t=24*1000*3600;
        System.out.println(t*25);
        System.out.println(24*1000*3600*25);
    }
}

Cette affiche :

2160000000

-2134967296

Pourquoi?


Merci pour toutes les réponses.

Est la seule façon d'utiliser L après le nombre?

J'ai essayé le (long)24*1000*3600*25 mais c'est aussi négatif.

Si vous avez trouvé une réponse qui a résolu votre problème, assurez-vous de voter, comme une réponse (en cliquant sur la case à cocher en dessous de la partition).
Salut hguser. Par (long)24*1000*3600*25 vous convertir le résultat, qui est -2134967296, dans un long, qui est -2134967296L. En effet, vous pourriez utiliser (long) au lieu de L, mais avec d'autres parenthèses: ((long)24)*1000*3600*25. Cependant, L est exactement fait pour ce cas, et il est même possible que le compilateur génère différents octets de code: 24 L est un littéral de type long, alors que la (longue)24 est un littéral de type int qui doit d'abord être converti en long (mais j'espère que le compilateur optimise).

OriginalL'auteur hguser | 2010-10-18