Почему 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. Кроме того, нет необходимости в дополнительном$с().