Почему Bash считает число 010 = 8?
x=010
echo $x
010
echo $(( x+0 ))
8
echo $(( x-2 ))
6
Я думал, что это может быть двоичным, но 010 = 10 = 2. Так почему он получает 8, и как я могу заставить его думать, 010 = 10 (и 010 - 2 = 8)?
Во многих синтаксических анализаторах чисел
—
Дерек 朕 會 功夫
010
означает 8, потому что если поставить 0
перед, значит восьмеричное, аналогично тому, как 0x
в некоторых языках - шестнадцатеричное.
Это на самом деле важно знать при программировании. В большинстве языков
—
Сет
0
триггеры восьмеричные, 0x
шестнадцатеричные и 0b
двоичные.
Объяснения Downvote?
—
Тим
@ Почему бы не быть 8? ;-) О, не мое понижение, хотя, но, вероятно, потому что это слишком простой. Это довольно нормальное поведение.
—
Rinzwind
0
говорит, что это восьмеричное. Если вы просто делаетеx=10
то ,echo $((x+0))
то шоу10
. Кроме того, нет необходимости в дополнительном$
с()
.