この節では,ANSI C規格の構文を引用してC言語の構文についてまとめます。 構文カテゴリはボールド体で,リテラル語または文字はモノスペースの非イタリック体で表します。 構文カテゴリの後のコロンはその構文の定義を示します。 定義が複数ある場合は別の行に表示するか, 「次のいずれか1つ」というように前置きしています。オプションの要素には (opt) を付けています。たとえば,次の行はオプションの式を中括弧で囲んでいます。
{ 式(opt) }
括弧内のセクション番号は,C言語のこの部分を説明している『American National Standard for Information Systems-Programming Language C』(文書番号: X3.159-1989)のセクションを示しています。
auto double int struct
break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while
_Bool _Complex (Alpha専用)
a b c d e f g h i j k l m
n o p q r s t u v w x y z
A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z _
0 1 2 3 4 5 6 7 8 9
.
数字列
.
e 符号(opt)
数字列
E 符号(opt)
数字列
+ -
p 符号(opt) 数字列P 符号(opt) 数字列
f l F L
0
0x 16進数字
0X 16進数字
1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7 8 9
a b c d e f
A B C D E F
u U
l L
' c文字列
'
L ' c文字列
'
' ),バックスラッシュ(
\ ),または改行文字
\' \" \? \\
\a \b \f \n \r \t \v
\ 8進数字
\ 8進数字 8進数字
\ 8進数字 8進数字
8進数字
\x 16進数字
" s文字列(opt)
"
L " s文字列(opt)
"
" ),バックスラッシュ(
\ ),または改行文字
[ ] ( ) . ->
++ -- & * + - ~ ! sizeof
/ % << >> < > <= >= == != ^ | && ||
? :
= *= /= %= += -= <<= >>= &= ^= |=
, # ##
[ ] ( ) { } * , : = ; ... #
< h文字列
>
" q文字列
"
>
"
. 数字
e
符号
E
符号
.
( 式
)
.
識別子
->
識別子
++
-
++ 単項式
- 単項式
& * + - ~ !
( 型名
) キャスト式
*
キャスト式
/
キャスト式
%
キャスト式
+
乗除式
-
乗除式
<<
加減式
>>
加減式
<
シフト式
>
シフト式
<=
シフト式
>=
シフト式
==
関係式
!=
関係式
&
等価式
^ AND式
| 排他的
OR式
&& 包含
OR式
| | 論理
AND式
? 式
: 条件式
= *= /= %= += -= <<= >>= &= ^= |=
=
初期化子
typedef
extern
static
auto
register
void
char
short
int
long
float
double
signed
unsigned
_Bool
_Complex (Alpha専用)
構造体または共用体指定子
列挙型指定子
typedef名
struct または union
識別子(opt) {
構造体宣言並び }
struct または union
識別子
struct
union
enum 識別子(opt)
{ 列挙子並び }
enum 識別子(opt)
{ 列挙子並び , }
enum 識別子
=
定数式
const
volatile
...
{ 初期化子並び
}
{ 初期化子並び,
}
{ 宣言並び(opt)
文並び(opt) }
;
if ( 式
) 文
if ( 式
) 文
else 文
switch ( 式
) 文
while ( 式
) 文
do 文
while ( 式
) ;
for ( 式(opt)
; 式(opt)
; 式(opt)
) 文
;
;
;
;
#if 定数式
改行 グループ(opt)
#ifdef 識別子
改行 グループ(opt)
#ifndef 識別子
改行 グループ(opt)
#elif 定数式
改行 グループ(opt)
#else 改行
グループ(opt)
#endif 改行
#include 前処理トークン
改行 (§3.8.2)
#define 識別子
置換並び 改行 (§3.8.3)
#define 識別子
( 識別子並び )(opt)
置換並び 改行 (§3.8.3)
#undef 識別子
改行 (§3.8.3)
#line 前処理トークン
改行 (§3.8.4)
#error 前処理トークン
(opt) 改行 (§3.8.5)
#pragma 前処理トークン
(opt) 改行 (§3.8.6)
# 改行 (§3.8.7)