Duplicata possible :
Bug d'Eclipse ? Quand un court-circuit n'est-il pas un court-circuit ?
En Java, je peux attribuer un short
ou un byte
à l'intérieur de blocs comme celui-ci :
short s = 20000;
byte b = 120;
Parce que 20000 est un short
et 120 est une valeur byte
valeur, si j'essaie d'essayer :
short s = 67000;
byte b = 128;
J'obtiendrai une erreur indiquant qu'il ne peut pas compiler à partir de int
a byte
donde
byte b = (byte)12232;
ne déclenchera même pas un avertissement indiquant que la valeur peut être perdue. Dans un appel de fonction, je suis de toute façon obligé de faire un casting :
void test(short s){}
test(1) //invalid
test((short)1) //valid
Alors que sur return
les types, c'est bon à nouveau.
short test(){
return 1; //valid
}
Pourquoi le compilateur décide-t-il parfois de connaître les limites des nombres (au moins à partir des constantes), alors qu'il semble l'oublier ailleurs ?