¿Por qué bash piensa que el número 010 = 8?
x=010
echo $x
010
echo $(( x+0 ))
8
echo $(( x-2 ))
6
Pensé que podría ser binario, pero 010 = 10 = 2. Entonces, ¿por qué obtiene 8 y cómo puedo hacer que piense 010 = 10 (y 010 - 2 = 8)?
En muchos analizadores numéricos,
—
Derek 朕 會 功夫
010significa 8 porque al poner un 0frente significa octal, similar a cómo poner 0xen algunos idiomas significa hexadecimal.
Esto es realmente algo importante para saber cuando se programa. En la mayoría de los idiomas se
—
Septiembre
0activan octal, 0xhexadecimal y 0bbinario.
¿Explicaciones de voto negativo?
—
Tim
@tim ¿por qué no sería 8? ;-) Sin embargo, no es mi voto negativo, pero probablemente porque es demasiado básico. Es un comportamiento bastante normal.
—
Rinzwind
0le dice que sea octal. Si solo lo haces,x=10entoncesecho $((x+0))se muestra10. Además, no es necesario el extra$con().