C++14の新機能、数値区切りは、整数リテラルと浮動小数点数リテラルを任意の桁で区切ることができる機能だ。区切り文字はシングルクオート。
int x = 1'000'000'000 ;
int y = 1'1'1'1'1'1 ;
int z = 1000000'00 ;
double d = 1'000.00 ;
ソースコードに10000000と100000000とが書かれていたとして、どちらが大きいかは、人間の目にはわかりにくい。しかし、10'000'000と100'000'000ならば、わかりやすい。
区切り桁は任意なので、日本人に馴染みやすい4桁で区切ることもできるし、2進数リテラルを8桁づつ区切ることもできる。
int n1 = 1'0000 ; // 1万
int n2 = 1'0000'0000 ; // 1億
// 8bit区切り
std::uint32_t bits = 0b00110100'10101010'00001111'11000011 ;
数値区切りは、純粋に人間がソースコードを目で読むための補助的な文法であって、プログラムの何らかの意味をもたらすものではない。
なおこの機能はGCC 4.9, Clang 3.4で実装されている。
Clang - C++1z, C++14, C++11 and C++98 Status
C++1y/C++14 Support in GCC - GNU Project - Free Software Foundation (FSF)
See Also:
本の虫: C++14の新機能: decltype(auto)
本の虫: C++14の新機能: 初期化lambdaキャプチャー
本の虫: C++14の新機能: constexpr関数の制限緩和
本の虫: C++14の新機能: メンバー初期化子と初期化リストの組み合わせ
本の虫: C++14の新機能: [[deprecated]] 属性
ドワンゴ広告
この記事はドワンゴ勤務中に書いた。
最近、ネタが尽きてきた。社内的には内定式という面白いイベントが先日あったそうだが、私は見ていなかったのでなんとも言えない。コスプレをしてきた内定者もいたという話だ。ネタ切れの時のために取っておいた、社内ヘアサロンに行ってみるべきだろうか。しかし、そのためには半年ほど髪を伸ばさなければならない。
ドワンゴは本物のC++プログラマーを募集しています。
CC BY-ND 4.0: Creative Commons — Attribution-NoDerivatives 4.0 International — CC BY-ND 4.0
No comments:
Post a Comment