MW211 EXIT

devlog
C言語/先頭0埋めの罠
2011年09月07日
C言語においてソース上に以下の表記をした場合、以下の値となる。

    「10」→「10」(10進数とみなされるため)
   「010」→「 8」( 8進数とみなされるため)
  「0x10」→「16」(16進数とみなされるため)

意外に見落としがちなのが、8進数の表記。
つい先頭位置合わせで以下のような記述をしてしまいがちだ。

   a = 0012;
   b = 0123;
   c = 1234;

この場合、aは12に、bは123には…当然ながらならない。
ちなみにこの先頭0埋めのことを「ゼロサプレス」…とは言わないから合わせて注意。
(っていうかこの文章を書いていて気づいた)
「ゼロサプレス」は「12→0012」ではなく、「0012→12」のことをさす。
「12→0012」のことは、「ゼロパディング」という。
分類:C/C++、注意