本の虫

著者:江添亮
ブログ: http://cpplover.blogspot.jp/
メール: boostcpp@gmail.com
Twitter: https://twitter.com/EzoeRyou
GitHub: https://github.com/EzoeRyou

アマゾンの江添のほしい物リストを著者に送るとブログ記事のネタになる

筆者にブログのネタになる品物を直接送りたい場合、住所をメールで質問してください。

C++14の新機能: 2進数リテラル

C++14の標準規格は、無事制定された。そこで、C++14に正式に入ることが確定した新機能を、解説していこうと思う。

今回は、手始めに2進数リテラルを解説する。

2進数リテラルとは、C++14に追加された新しい整数リテラルである。その文法と意味は、文章で解説するよりも、コードを読んだほうが理解が早いだろう。

int main()
{
    int a = 0b11 ; // 3
    int b = 0B11 ; // 3
    int c = 0b1111 ; // 15
    int d = 0b1011 ; // 11
}

これまで、C++の整数リテラルには、8進数、10進数、16進数があったが、新しく2進数リテラルが追加された。

文法は、0b、もしくは0Bに続けて、0か1が連続する。

2進数リテラルは、ビット列演算などをするソースコードをわかりやすく記述するのに役立つ。

主要コンパイラーの対応状況であるが、GCCは独自拡張として、4.3から2進数リテラルをサポートしている。GCC 4.9で正式にC++標準規格としても有効になるように変更された。ClangはGCCより後発で、GCCとの互換性のためにGCCの独自拡張も多く実装しているため、当初から2進数リテラルはサポートしてる。

GCCのC++14実装状況: C++1y/C++14 Support in GCC - GNU Project - Free Software Foundation (FSF)

ClangのC++14実装状況: Clang - C++1z, C++14, C++11 and C++98 Status

ドワンゴ広告

この記事はドワンゴ勤務中に書かれた。

ドワンゴは本物のC++プログラマーを募集しています。

採用情報|株式会社ドワンゴ

CC BY-ND 4.0: Creative Commons — Attribution-NoDerivatives 4.0 International — CC BY-ND 4.0