logical - java operators
¿Por qué no está(123== 0123) en java? (3)
Estoy desarrollando una aplicación en Android usando Eclipse. Escribí el siguiente código y en las pruebas, el primer y tercer bloque " if " no están disponibles. ¿Por qué?
Cuando agrego un cero inicial a un número, el operador igual devuelve falso.
int var = 123;
if (var == 0123) {
//not reachable
}
if (var == 123) {
//reachable
}
if (var == (int)0123) {
//not reachable
}
if (var == (int)123) {
//reachable
}
Cualquier número entero que empiece con cero es un número octal (base 8).
0123
es el número octal y 123
es el número decimal
0123 = (3*8^0) +(2*8^1)+(1*8^2)+(0*8^4)
=3+16+64+0
=83
porque 0123 en dígito no decimal es octal (base 8), por lo que es igual a 83
Para convertir un número k a decimal, use la fórmula que define su representación en base 8:
0123 base-8 = 83 decimal
0123 = (3*8^0) +(2*8^1)+(1*8^2)+(0*8^4)
=3+16+64+0
=83
Un número octal consiste en un dígito ASCII 0 seguido de uno o más de los dígitos ASCII 0 a 7 y puede representar un entero positivo, cero o negativo.
Nota: Los valores octales se indican en java con cero inicial. El número decimal normal no puede tener un cero inicial.
0123
es un número octal ( 0 ), mientras que 123
es un número decimal.
por lo que 0123 en realidad es igual a 83.