2008-02-21

C++のリテラル値(整数)

最近ハマった事、それは

C++でのリテラル値の書き方を知らない

という、それで金取っていいの?と突っ込まれてしまいそうな事でした。
実際、気にはなっていましたが、型指定したいときに調べる程度しかしてなかったのでこの機会に一通り調べてみようと思います。

ISOの規格、読まなくても既に読んで解説してくれてる素晴らしい方がいらっしゃいましたので、要約だけ書いてみます。

きちんと知りたい方は ふ 流浪の日々 を参照してください。

まず、整数リテラルから
  • 10進リテラル
    先頭1桁が 1〜9 で始まり残りの桁が 0〜9 で書かれた数値、従って0は10進リテラルではない。
    サフィックスとして末尾にunsignedの場合はuまたはUを、longの場合はlまたはLを付けてもよい。
    両方の場合はどちらが先でもよい。
  • 8進リテラル
    先頭1桁が0で始まり、残りの桁が 0〜7 で書かれた数値、従って0は8進リテラル。
    サフィックスは10進と同じ。
    私がハマったのはコレ。桁揃えるのに先頭に 00123 のように書いてしまいました。
    当然テストで気づいたので客先にはバレてないですが…オハズカシイ限りorz
  • 16進リテラル
    0xまたは0Xで始まり、残りの桁が 0〜9, a〜f, A〜F で書かれた数値。
    これもサフィックスは10進と同じ。
(unsigned) integer, (unsigned) long 以外の整数リテラルはない…のかな?char は文字リテラルだし…

0 件のコメント: