¿Por qué la conversión de short a char es una conversión estrecha?
Una conversión de reducción es cuando se coloca un tipo de datos que puede contener un valor mayor en un tipo de datos que puede contener un valor máximo como máximo.
long l = 4L;
int i = (int)l;
Sin embargo, no entiendo por qué un short en un char es una conversión estrecha, pero tengo la intuición de que está relacionado con firmado / sin signo de esos dos tipos de datos, pero no puedo explicar por qué.
short s = 4; // short max value is 32767
char c = (char)s; // char max value is 65535
Parece que sería una conversión de ampliación o, al menos, no se reduciría ni se ampliaría, ya que ambos tienen 16 bits y pueden contener el mismo número de valores.
System.out.println((int)Character.MIN_VALUE); //0
System.out.println((int)Character.MAX_VALUE); //65535
System.out.println(Short.MIN_VALUE); //-32768
System.out.println(Short.MAX_VALUE); //32767
//65535 = 32768+32767