Estoy buscando una explicación para el comportamiento de Java al manipular los siguientes escenarios. Yo entiendo que la tabla ASCII está dispuesto de manera que el valor del carácter 5
es de cinco posiciones superior a 0
. Esto permite que para los cálculos a realizar en el carbón de leña sin convertir a un int como se ve en el primer ejemplo.
Lo que no entiendo es por qué Java parece manejar incoherente si para proporcionar un valor de una tabla ASCII y cuándo hacer un cálculo de los caracteres como si fueran números enteros.
int x = '5' - '0';
salida x = 5;
int x = '5'
salida x = 53;
Ahora, para algunos ejemplos, que introducen confusión.
int x = '0' + 1 - '5'
salida x = -4
int y = '5' - '0' + '1'
salida 54
int y = '5' - 0 + '1'
salida 102
Java parece estar haciendo una conversión implícita, pero ¿cómo es inferir Java, que la representación de la int / char caso de que se utiliza?
Sólo tiene que escribir la conversión char a código ASCII (por debajo de sus estados de cuenta)
int x = '0' + 1 - '5'
48 + 1 - 53 = -4
int y = '5' - 0 + '1'
53 - 0 + 49 = 102
int y = '5' - '0' + '1'
53 - 48 + 49 = 54
Aviso que es consistente, cada uno restos int int y cada Char convierten en código ASCII