C++14 数値リテラルの桁区切り文字

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)」と見なすことができる、ということで、カンマだと思って書いていくことになります。


他言語での桁区切り文字

参照