J'ai écrit un programme.Rétrécissement implicite lors de la sommation des constantes vs rétrécissement explicite lors de la sommation des variables
class First
{
public static void main(String[] args)
{
int c = 5;
byte b = c+6;
System.out.println(b);
}
}
Et ma sortie javac est:
error: incompatible types: possible lossy conversion from int to byte
byte b = c+6;
^
1 error
Mais si je modifie le programme:
class First
{
public static void main(String[] args)
{
byte b = 5+6;
System.out.println(b);
}
}
Il exécute bien, sortie:
11
Je sais qu'avant l'opération, les deux opérandes ted en entier. Ensuite, l'opérateur + donne un entier. Mais si la variable c était un entier, alors la constante 5 est aussi un entier par défaut. Pourquoi javac ne génère-t-il pas une erreur dans le second cas?
Veuillez me guider si je me trompe conceptuellement.