Por que o bash acha que o número 010 = 8?
x=010
echo $x
010
echo $(( x+0 ))
8
echo $(( x-2 ))
6
Eu pensei que poderia ser binário, mas 010 = 10 = 2. Então, por que ele obtém 8 e como posso fazê-lo pensar 010 = 10 (e 010 - 2 = 8)?
Em muitos analisadores de números,
—
Derek #
010significa 8 porque colocar um 0na frente significa octal, semelhante a como colocar 0xem alguns idiomas significa hex.
Isso é realmente uma coisa importante a saber ao programar. Na maioria dos idiomas,
—
Seth
0aciona octal, 0xhex e 0bbinário.
Explicações de voto negativo?
—
Tim
@tim por que não seria 8? ;-) Oh, não meu voto negativo, mas provavelmente porque é muito básico. É um comportamento bastante normal.
—
Rinzwind
0diz que é octal. Se você apenas fazx=10,echo $((x+0))então mostra10. Além disso, não há necessidade de extra$com o().