code:analyser longtemps nombre négatif
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 impression:
2160000000
-2134967296
Pourquoi?
Merci pour toutes les réponses.
La seule façon d'utiliser L après le numéro?
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 un accepté répondez (en cliquant sur la coche sous la partition). –
Bonjour hguser. Par '(long) 24 * 1000 * 3600 * 25' vous convertissez le résultat, qui est' -2134967296', en un long, qui est '-2134967296L'. Vous pouvez en effet utiliser (long) au lieu de L mais avec des parenthèses supplémentaires: '((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 un code octet différent: 24L est un littéral de type long, tandis que (long) 24 est un littéral de type int qui doit d'abord être converti en un long (mais espérons que le compilateur optimise cela). – chiccodoro