C++14では、数値リテラルの桁区切り文字が入ることになりました。
日本では値を扱う際に、3桁ごとにカンマ区切りで値を表記することがあります(たとえば、1千万円は10,000,000円)。このような表記に慣れている人であれば、大きな桁数であっても一目見れば値を読み上げられます。
C++14では今のところ、整数リテラルと浮動小数点数リテラルに、シングルクォーテーションを区切り文字として採用することが考えられています。
int x = 1'048'576; // xの値は1048576 double f = 1.602'176'565e-19;
区切り文字は、コードの見やすさのためだけにあるので、コメントと同じく単に無視されます。
区切り文字の候補は他にもいろいろありました:
- スペース 1 048 576 (Bjarneさんオススメ)
- カンマ 1,048,576
- グレイヴ・アクセント(バッククォート) 1`048`576
- アンダースコア 1_048_576
- ダブルアンダースコア 1__048__576
- スコープ解決演算子 1::048::576
他の言語機能との競合といった理由から、カンマやアンダースコアは外され、シングルクォーテーションが選択されました。シングルクォーテーションは「上付きカンマ(upper comma)」と見なすことができる、ということで、カンマだと思って書いていくことになります。
他言語での桁区切り文字
- Perlはアンダースコアを使用する: Underscores in numbers
- Rubyもアンダースコアを使用する:アンダーバーによる数値の区切り
- Java 7もアンダースコア: Underscores in Numeric Literals
- Adaもアンダースコア: Ada '83 Language Reference Manual
参照