Java conversión implícita entre int y Char

Lachlan Lindsay:

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 5es 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?

user7294900:

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

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=178236&siteId=1
Recomendado
Clasificación