最終更新日時(UTC):
が更新

履歴 編集

macro
<cstdio>

_PRINTF_NAN_LEN_MAX(C++26)

#define _PRINTF_NAN_LEN_MAX implementation-defined

概要

printf系関数がNaN (非数) を出力する際に生成しうる、最大の文字数を表す整数定数。

%f%e%gなどの浮動小数点変換でNaNを出力する場合、処理系はnannan(n-char-sequence)形式の文字列を生成する。このマクロは、その文字列の最大長を表す。出力先バッファのサイズを決定する際に利用できる。

C23で<stdio.h>に追加されたマクロであり、C++26で<cstdio>に取り込まれた。

備考

  • 規格上、値は3以上であることが規定されている

#include <cstdio>
#include <cmath>

int main()
{
  // NaNを出力するのに十分なバッファを確保する
  char buf[_PRINTF_NAN_LEN_MAX + 1];

  std::snprintf(buf, sizeof(buf), "%f", NAN);
  std::printf("%s\n", buf);
}

出力例

nan

バージョン

言語

  • C++26

処理系

参照