¿Por qué los resultados siguientes en 34? Parece que no tiene nada que ver con los números octales.variable int con cero inicial?
intval(042);
¿Por qué los resultados siguientes en 34? Parece que no tiene nada que ver con los números octales.variable int con cero inicial?
intval(042);
pero un 0 inicial indica octal en muchos idiomas, como es el caso aquí.
+1 para la primera respuesta correcta que también explica ** why **. –
Es simplemente cómo se define la función. El cero inicial es una instrucción que lo analiza como un número octal, de forma similar a cómo 0x como un prefijo significa hexadecimal. Ver the documentation for more information.
Tenga cuidado al pasar esta función un valor de cadena con un "0" inicial. Si le da "042", entonces lo tratará como BASE 8 - 9 y lo convertirá en valor decimal, que es por defecto base.
Por favor, vaya a través this
Se tiene que ver con los números octales, 042
se interpreta como el número octal 42
que es 4 * 8 + 2 = 34
.
Tenga en cuenta que la interpretación octal ocurre cuando se analiza el número literal al cargar el script PHP. No tiene nada que ver con intval()
, que no hace nada aquí porque el valor ya es entero.
interpretación Octal ocurre sólo con los literales numéricos, no cuando se lanza una cadena a un entero:
intval(042) // == 34
intval('042') // == 42
(int)'042' // == 42
En PHP con un número que lleva un 0 como un número octal.
So 042 se lee como un número octal.
La función intval() la convierte en número decimal, que es 34.
lo que la salida del navegador es 34.
documentos PHP para los números octales, http://php.net/manual/en /language.types.integer.php. Los octales comienzan con 0. –
Gracias, lo obtuve, lo califiqué => 4 * 8 + 2 – RoboTamer
Un 0 inicial hará que PHP trate el valor como octal. – GordonM