表紙 / 自作ソフト / 日記 / 宝箱 / サイト情報 / 検索
一般 / 新C言語 / 駄文

プログラミング言語 C の新機能


←前頁へ◎表紙へ次頁へ→
 
 

1. 概略
1.1 はじめに
1.2 新しい予約語
1.3 新しいヘッダファイル
2. C プリプロセッサ
2.1 新しいコメント表記方法
2.2 空引数を許された関数型マクロ呼出し
2.3 可変個数引数を持つマクロ定義
2.4 あらかじめ定義されているマクロ名
2.5 プログラミング言語 C 標準プラグマ
2.6 単項演算子 _Pragma
2.7 プリプロセッサ式における整数型
2.8 文字列定数とワイド文字列定数の結合
3. 字句
3.1 ユニバーサルキャラクタ名
3.2 拡張された識別名使用文字
3.3 浮動小数点定数の 16 進数表記
4. 配列
4.1 可変長配列
4.2 構造体中の 0 長配列メンバ
4.3 配列要素中の記憶/型修飾子
5. 整数型
5.1 _Bool 型
5.2 long long int 型
5.3 long long int 型の定数
5.4 整数除算
6. 複素数型
6.1 _Complex 型
6.2 _Imaginary 型
6.3 複素数に関する四則演算
7. 文法一般
7.1 暗黙の関数宣言
7.2 宣言時の暗黙の型
7.3 前定義識別名 __func__
7.4 enum 宣言での余分なカンマ
7.5 inline 関数定義
7.6 restrict ポインタ
7.7 変数宣言と実行コードの位置関係
7.8 指示付きの初期化子 (Designated Initializer)
7.9 複合リテラル (Compound Literal)
7.10 選択文と反復文のブロック化
8. 標準ライブラリ(拡張)
8.1 ctype.h
8.2 float.h
8.3 math.h
8.4 stdarg.h
8.5 stdio.h
8.6 stdlib.h
8.7 wchar.h
8.8 wctype.h
9. 標準ライブラリ(新規)
9.1 complex.h: 複素数
9.2 fenv.h: 浮動小数点環境
9.3 inttypes.h
9.4 stdbool.h
9.5 stdint.h
9.6 tgmath.h: 型総称数学関数
A. 付録
A.1 strftime 書式指定子
A.2 printf の書式

A. 付録

A.2 printf の書式
 stdio.h に含まれる *printf 関数の書式も C99 では拡張されています(赤字部分)。従来のものと拡張されたものを含めた全てを以下に示します。

A.2.1 書式
 printf の書式は、以下のとおりです。ここで、'()'はグループ化を、'?' は直前を修飾し省略可能を、'*' は直前を修飾し0回以上の繰り返しを、'[]'は、[]でくるまれた文字の中から任意の一文字を表します。
[%](フラグ)*(最小領域幅)?([.](精度)?)?(長さ修飾子)?(変換指定子)

A.2.2 フラグ (flags)
フラグ説明
-変換結果は通常右詰にされますが、これを指定すると左詰にします。
+変換対象が数値の場合、変換結果に必ず符号をつけます
' '変換対象が数値の場合で、変換結果に符号が出力されない場合、' ' が代わりとして出力されます。フラグ '+' と ' ' が同時に指定された場合、'+' が優先されます。
#代替形式で表示します。
変換指定子説明
o値が 0 以外の場合、'0' を先頭に付加します。
xX値が 0 以外の場合、'0x' または '0X' を先頭に付加します。
aAeEfF必ず小数点をつけます
gG必ず小数点をつけます。後続する 0 も省略せずに付加します。
それ以外未定義です
0空き領域を埋める文字として ' ' ではなく '0' を使います。
変換指定子説明
diouxX aAeEfFgG変換結果が、nan や infinity などでなく、数字列に準じるものの場合、空き領域を埋める文字として ' ' ではなく '0' が使われます。フラグ '-' も指定されたときは、'-' が優先されます。diouxX が指定され、かつ精度も指定された場合、このフラグは無視されます。
それ以外未定義です

A.2.3 最小領域幅 (minimum field width)
最小領域幅説明
10進正数最低限、指定した値分の領域幅を確保します。フラグ未指定の場合、変換結果は右詰で、余った領域は ' ' で埋められます。
*引数から int 型の整数値を取得し、それを領域幅として使用します。負の値が指定された場合、フラグ '-' が指定されたものとみなし、その絶対値を領域幅として使用します。

A.2.4 精度 (precision)
精度説明
10進正数
変換指定子説明
diouxX最小限出力する数字の個数。未指定の場合、1 とみなします。
eEfF小数点以降に出力する数字の個数。未指定の場合、6 とみなします。
aA小数点以降に出力する数字の個数。未指定の場合、FLT_RADIX==2のべき乗の時その値を正確に表現する値、FLT_RADIX!=2のべき乗の時その値を区別するに十分な値とみなします。
gG最大有効桁数を指定します。未指定の場合、有効桁数すべてとみなします
s最大出力文字数を指定します。未指定の場合、\0 文字までのすべての文字とみなします
それ以外未定義です
*引数から int 型の整数値を取得し、それを精度値として使用します。負の値が指定された場合、精度は指定されなかったものとして扱われます。
なし精度値 0 として扱われます

A.2.5 長さ修飾子 (length modifier)
長さ修飾子変換指定子
hhdiouxX(un)signed char
nsigned char *
hdiouxX(un)signed short
nsigned short *
ldiouxX(un)signed long
cwint_t
swchar_t *
aAeEfFgGdouble
nsigned long *
lldiouxX(un)signed long long
nsigned long long *
jdiouxX(u)intmax_t
nintmax_t *
zdiouxXsize_t
n符号付きの size_t 相当 *
tdiouxXptrdiff_t
n符号付きの ptrdiff_t 相当 *
LaAeEfFgGlong double
HaAeEfFgG_Decimal32 (TR 24732: Decimal floating point)
DaAeEfFgG_Decimal64 (TR 24732: Decimal floating point)
DDaAeEfFgG_Decimal128 (TR 24732: Decimal floating point)
Fspnfar * (企業による非標準規格。DOS用)
Nspnnear * (企業による非標準規格。DOS用)

A.2.6 変換指定子 (conversion specifier)
 変換指定子の同一項目に、大文字小文字がある場合、出力結果に用いられているアルファベット文字が、対応した文字で出力されます。
変換指定子引数に要求される型種別表示形式注記
d,i符号付き整数10進数[-]?[0-9]+・精度で指定された幅に満たない場合には、0を詰めます
・変換結果が 0 で、かつ精度が 0 の場合、何も出力されません
u符号無し整数10進数[0-9]+
o符号無し整数8進数[0-7]+
x,X符号無し整数16進数[0-9a-fA-F]+
f,F浮動小数点10進数[-]?[0-9]+[.][0-9]+ ・値が、数値でない場合、以下が用いられます
 ・e,f: [-]?inf / [-]?infinity / [-]?nan / [-]?nan (文字列)
 ・E,F: [-]?INF / [-]?INFINITY / [-]?NAN / [-]?NAN (文字列)
・フラグ '#' 未指定で、精度が 0 の場合、小数点は出力されません
・小数点が出力される場合、必ず数字が小数点前に前置されます
・値は適切に丸められます
e,E浮動小数点10進数[-]?[1-9][.][0-9]+[eE][+-][0-9][0-9]+
[-]?0
g,G浮動小数点10進数条件で変わる・変換結果の指数が、-4 未満の場合、または精度以上の場合、e,E が使われ、それ以外の場合、f,F と同じ表示法が使われます。
・後続する冗長な 0 は、フラグ '#' が指定されていなければ削除されます。
・小数点文字は、小数以下が出力される場合のみ出力されます。
a,A浮動小数点16進数[-]?0[xX][1-9a-fA-F][.][0-9a-fA-F]+[pP][+-][0-9]+・フラグ '#' 未指定で、精度が 0 の場合、小数点は出力されません
・非正規化小数の場合のみ、小数点前に 0 を置く事ができます([-]?0[xX][0-9a-fA-F]…)。
c符号付き整数文字文字 
sゼロ終端文字列へのポインタ文字列文字列・ゼロ直前までの文字が出力されます
・精度指定がある場合、指定された長さだけ出力されます。
pポインタポインタ 指定されたポインタ値を処理系依存方式で出力されます
n符号付き整数へのポインタ なしこれまで出力された文字数を、ポインタが指す整数に書き込みます
%なし文字%'%' を出力します

←前頁へ◎表紙へ次頁へ→
 
 
表紙 - 著作権 - 注意事項 - リンクについて - 404 エラーについて
(c)1999-2014 seclan. All rights reserved.