まつもと ゆきひろです

Q: サブジェクトの通り

  printf "%d\n", "08"

はなぜか0を出力します.

  printf "%d\n", "07"

は7を出力するのに.なぜ?


A: printfは%dに文字列が与えられると数値に変換しますが,この
時に:

  * 文字列の先頭に0が来た場合には8進
  * 文字列の先頭に0xが来た場合には16進

とみなして数値化します.08は0の次に8(8進数にとっては数値でな
いもの)が来ていますので,読み込みはそこで終り,結果は0になり
ます.必要に応じてto_i(こちらはかならず10進にする)を使って下
さい.