¿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 朕 會 功夫
010
significa 8 porque al poner un 0
frente significa octal, similar a cómo poner 0x
en algunos idiomas significa hexadecimal.
Esto es realmente algo importante para saber cuando se programa. En la mayoría de los idiomas se
—
Septiembre
0
activan octal, 0x
hexadecimal y 0b
binario.
¿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
0
le dice que sea octal. Si solo lo haces,x=10
entoncesecho $((x+0))
se muestra10
. Además, no es necesario el extra$
con()
.