タイトルおよびコピーライト

まえがき

1 C言語の要素
1.1 文字集合
1.1.1 3文字表記
1.1.2 2文字表記
1.2 識別子
1.3 ユニバーサル・キャラクタ名
1.4 コメント
1.5 キーワード
1.6 演算子
1.7 区切り記号
1.8 文字列リテラル
1.9 定数
1.9.1 整数定数
1.9.2 浮動小数点定数
1.9.2.1 意味
1.9.2.2 浮動小数点型
1.9.2.3 16進浮動小数点定数
1.9.2.4
1.9.3 文字定数
1.9.3.1 ワイド文字
1.9.3.2 多バイト文字
1.9.3.3 文字エスケープ・ シーケンス
1.9.3.4 数値エスケープ・ シーケンス
1.9.4 列挙定数
1.10 ヘッダ・ファイル
1.11 制限事項
1.11.1 翻訳上の制限
1.11.2 数値制限
1.11.3 文字表示

2 基本事項
2.1 ブロック
2.2 コンパイル単位
2.3 スコープ
2.3.1 ファイル・スコープ
2.3.2 ブロック・スコープ
2.3.3 関数スコープ
2.3.4 関数プロトタイプ・ スコープ
2.4 可視性
2.5 副作用と評価順序点
2.6 不完全型
2.7 互換型と合成型
2.8 結合
2.9 仮定義
2.10 記憶域クラス
2.10.1 autoクラス
2.10.2 registerクラス
2.10.3 staticクラス
2.10.4 externクラス
2.11 記憶域クラス修飾子
2.11.1 __inline修飾子
2.11.2 inline修飾子
2.11.2.1 例 -- インライン関数指定子の使用
2.11.3 __forceinline修飾子
2.11.4 __align 修飾子
2.12 順方向参照
2.13 タグ
2.14 左辺値と右辺値
2.15 名前空間
2.16 前処理
2.17 型名

3 データ型
3.1 データ・サイズ
3.2 汎整数型
3.2.1 非文字型
3.2.2 文字型
3.3 浮動小数点型
3.3.1 複素数型 (Alpha 専用)
3.3.2 虚数型 (Alpha 専用)
3.4 派生型
3.4.1 関数型
3.4.2 ポインタ型
3.4.3 配列型
3.4.4 構造体型
3.4.5 共用体型
3.5 void型
3.6 列挙型
3.7 型修飾子
3.7.1 const型修飾子
3.7.2 volatile型修飾子
3.7.3 __unaligned型修飾子
3.7.4 __restrict型修飾子
3.7.4.1 理由
3.7.4.1.1 エイリアシング
3.7.4.1.2 ライブラリの例
3.7.4.1.3 相互に重なり合うオブジェクト
3.7.4.1.4 memcpyのための限定ポインタのプロトタイプ
3.7.4.2 __restrict型修飾子の正式な定義
3.7.4.3
3.7.4.3.1 ファイル・スコープ限定ポインタ
3.7.4.3.2 関数の仮引数
3.7.4.3.3 ブロック・スコープ
3.7.4.3.4 構造体のメンバ
3.7.4.3.5 型定義
3.7.4.3.6 限定ポインタに基づく式
3.7.4.3.7 限定ポインタ間での代入
3.7.4.3.8 非限定ポインタへの代入
3.7.4.3.9 型修飾子の非効率的な使用
3.7.4.3.10 制約違反
3.8 型定義

4 宣言
4.1 宣言の構文規則
4.2 初期化
4.3 外部宣言
4.4 単純オブジェクトの宣言
4.4.1 単純オブジェクトの初期化
4.4.2 整数オブジェクトの宣言
4.4.3 文字変数の宣言
4.4.4 浮動小数点変数の宣言
4.5 列挙型の宣言
4.6 ポインタの宣言
4.6.1 voidポインタの宣言
4.6.2 ポインタの初期化
4.7 配列の宣言
4.7.1 配列の初期化
4.7.2 ポインタと配列
4.7.3 可変長配列
4.8 構造体と共用体の宣言
4.8.1 構造体と共用体の類似点
4.8.2 構造体と共用体の相違点
4.8.3 ビット・フィールド
4.8.4 構造体の初期化
4.8.5 共用体の初期化
4.9 ディジグネーションを使用した初期化子
4.9.1 カレント・オブジェクト
4.9.2 ディジグネーション
4.9.3
4.10 タグの宣言
4.11 型定義の宣言

5 関数
5.1 関数呼出し
5.2 関数型
5.3 関数定義
5.4 関数宣言
5.5 関数プロトタイプ
5.5.1 プロトタイプの構文
5.5.2 スコープと変換
5.6 仮引数と実引数
5.6.1 実引数の変換
5.6.2 実引数としての関数識別子と配列識別子
5.6.3 main関数への実引数の引渡し

6 式と演算子
6.1 1次式
6.1.1 識別子
6.1.2 定数
6.1.3 文字列リテラル
6.1.4 括弧で囲んだ式
6.2 C言語演算子
6.3 後置演算子
6.3.1 配列の参照
6.3.2 関数呼出し
6.3.3 構造体と共用体の参照
6.3.4 後置インクリメント演算子と後置デクリメント演算子
6.4 単項演算子
6.4.1 単項プラス演算子と単項マイナス演算子
6.4.2 否定
6.4.3 前置インクリメント演算子と前置デクリメント演算子
6.4.4 アドレス演算子と間接参照
6.4.5 ビット否定
6.4.6 キャスト演算子
6.4.7 sizeof演算子
6.4.8 __typeof__演算子
6.4.9 _Pragma演算子
6.5 2項演算子
6.5.1 乗除演算子
6.5.2 加減演算子
6.5.3 シフト演算子
6.5.4 関係演算子
6.5.5 等価演算子
6.5.6 ビット演算子
6.5.7 論理演算子
6.6 条件演算子
6.7 代入演算子
6.8 コンマ演算子
6.9 定数式
6.9.1 汎整数定数式
6.9.2 算術定数式
6.9.3 アドレス定数
6.10 複合リテラル式
6.11 データ型変換
6.11.1 通常の算術変換
6.11.1.1 文字と整数
6.11.1.2 符号付き整数と符号なし整数
6.11.1.3 浮動小数点と汎整数
6.11.1.4 浮動小数点型
6.11.2 ポインタ変換
6.11.3 関数の実引数の変換

7
7.1 ラベル付き文
7.2 複文
7.3 式文
7.4 空文
7.5 選択文
7.5.1 if文
7.5.2 switch文
7.6 繰返し文
7.6.1 while文
7.6.2 do文
7.6.3 for文
7.7 飛越し文
7.7.1 goto文
7.7.2 continue文
7.7.3 break文
7.7.4 return文

8 前処理命令とあらかじめ定義されたマクロ
8.1 マクロ定義(#defineおよび#undef)
8.1.1 オブジェクト形式マクロ
8.1.2 関数形式マクロ
8.1.2.1 マクロ定義指定の規則
8.1.2.2 マクロ参照指定の規則
8.1.2.3 マクロ実引数における副作用
8.1.3 文字列リテラルへの変換(#)
8.1.4 トークンの連結(##)
8.2 条件付きコンパイル(#if,#ifdef,#ifndef ,#else,#elif,#endif,defined)
8.2.1 #if 命令
8.2.2 #ifdef 命令
8.2.3 #ifndef 命令
8.2.4 #else 命令
8.2.5 #elif 命令
8.2.6 #endif 命令
8.2.7 defined演算子
8.3 ファイルの取込み(#include)
8.4 明示的な行番号付け(#line)
8.5 処理系固有の前処理命令(#pragma)
8.6 エラー命令(#error)
8.7 空命令(#)
8.8 あらかじめ定義されたマクロ名
8.8.1 __DATE__マクロ
8.8.2 __FILE__マクロ
8.8.3 __LINE__マクロ
8.8.4 __TIME__マクロ
8.8.5 __STDC__マクロ
8.8.6 __STDC_HOSTED__マクロ
8.8.7 __STDC_VERSION__マクロ
8.8.8 __STDC_ISO_10646__マクロ
8.8.9 システム識別マクロ
8.9 __func__宣言済み識別子

9 ANSI C標準ライブラリ
9.1 診断メッセージ(<assert.h>)
9.2 複素数算術(<complex.h>)
9.3 文字処理(<ctype.h>)
9.4 エラー・コード(<errno.h>)
9.5 ANSI Cの限界(<limits.h>および<float.h>)
9.6 ローカル化(<locale.h>)
9.7 算術(<math.h>)
9.8 非ローカル飛越し(<setjmp.h>)
9.9 シグナル処理(<signal.h>)
9.10 可変個実引数(<stdarg.h>)
9.11 ブール型とブール値(<stdbool.h>)
9.12 共通定義(<stddef.h>)
9.13 標準入出力(<stdio.h>)
9.14 汎用ユーティリティ(<stdlib.h>)
9.15 文字列処理(<string.h>)
9.16 型汎用数学(<string.h>)
9.16.1 実数型の決定(<tgmath.h>)
9.16.2 <math.h>と<complex.h>で同じ名前の接尾語なしの関数
9.16.3 対応するc接頭語関数が<complex.h>にない,<math.h>の接尾語なし関数
9.16.4 <math.h>内の関数に対応するc接頭語付き関数ではない,<complex.h>内の接尾語なし関数
9.16.5
9.16.6 虚数引数
9.17 日付と時刻(<time.h>)

A 言語構文一覧

B ANSI規格準拠の概要
B.1 診断('2.1.1.3)
B.2 ホスト環境('2.1.2.2)
B.3 多バイト文字('2.2.1.2)
B.4 エスケープ・シーケンス('2.2.2)
B.5 翻訳限界('2.2.4.1)
B.6 数量的限界('2.2.4.2)
B.7 キーワード('3.1.1)
B.8 識別子('3.1.2)
B.9 識別子の結合('3.1.2.2)
B.10 型('3.1.2.5)
B.11 整数定数('3.1.3.2)
B.12 文字定数('3.1.3.4)
B.13 文字列リテラル('3.1.4)
B.14 演算子-複合代入('3.1.5)
B.15 文字と整数-値保存拡張('3.2.1.1)
B.16 符号付き整数と符号なし整数の変換('3.2.1.2)
B.17 浮動小数点数と汎整数の変換('3.2.1.3)
B.18 ポインタ変換('3.2.2.3)
B.19 構造体および共用体メンバ('3.3.2.3)
B.20 sizeof演算子('3.3.3.4)
B.21 キャスト演算子('3.3.4)
B.22 乗除演算子('3.3.5)
B.23 加減演算子('3.3.6)
B.24 ビット単位のシフト演算子('3.3.7)
B.25 記憶域クラス指定子('3.5.1)
B.26 型指定子('3.5.2)
B.27 構造体および共用体指定子('3.5.2.1)
B.28 変形構造体および共用体
B.29 構造体の境界調整
B.30 列挙型指定子('3.5.2.2)
B.31 型修飾子('3.5.3)
B.32 宣言子('3.5.4)
B.33 初期化('3.5.7)
B.34 switch文('3.6.4.2)
B.35 外部オブジェクト定義('3.7.2)
B.36 条件付き取込み('3.8.1)
B.37 ソース・ファイルの取込み('3.8.2)
B.38 マクロ置換-あらかじめ定義されたマクロ名('3.8.3)
B.39 ##演算子('3.8.3.3)
B.40 エラー命令('3.8.5)
B.41 プラグマ命令('3.8.6)
B.42 関数のインライン展開
B.43 結合プラグマ
B.44 その他のプラグマ

C ASCII等価テーブル

D Compaq CでサポートするコモンCの拡張
D.1 ANSI Cと互換性のある拡張
D.2 ANSI Cと互換性のない拡張

E Compaq CでサポートするVAX C の拡張
E.1 ANSI Cと互換性のある拡張
E.2 ANSI Cと互換性のない拡張

F 識別子のユニバーサル・キャラクタ名


4-1 構造体の初期化の規則
5-1 実引数として渡される関数の宣言
7-1 switch文を使用した空白, タブ,および改行のカウント


1-1 3文字表記
1-2 2文字表記
1-3 キーワード
1-4 区切り記号
1-5 整数定数に型を割り当てる規則
1-6 浮動小数点の表記
1-7 文字エスケープ・ シーケンス
2-1 定義済み境界調整定数
2-2 型名の例
3-1 基本データ型
3-2 データ型のサイズと範囲
6-1 C言語演算子
6-2 C言語演算子の優先順位
9-1 ファイル・モード
9-2 strftime変換指定子
B-1 Tru64 UNIX上であらかじめ定義されたマクロ名
B-2 OpenVMS VAXおよびAlpha上であらかじめ定義されたマクロ名
B-3 ライブラリ・ルーチン規格準拠マクロ-全プラットフォーム
C-1 ASCII等価チャート

索引