Bashはなぜ016 + 1 = 15だと思いますか?

Bashはなぜ016 + 1 = 15だと思いますか?

0で始まる数字がなぜこのような興味深い動作を生成するのかを説明できる人はいますか?

#!/bin/bash
NUM=016 
SUM=$((NUM + 1)) 
echo "$NUM + 1 = $SUM"

以下を印刷します。

016+1=15

ベストアンサー1

誤解は、この数字があなたの期待を表していないということです。

先行0は8進数を表します。016つまりと同じです8#16。先行ゼロを維持するにはが必要です10#016

> num=016
> echo $((num))
14
> echo $((10#$num))
16

おすすめ記事