共用方式為


C 語彙文法

語彙基元

token
keyword
identifier
constant
string-literal
punctuator

preprocessing-token
header-name
identifier
pp-number
character-constant
string-literal
punctuator
 不可是上述任一個的每個非空白字元

關鍵字

keyword:下列其中一個
auto break case char const continue
default do double else enum extern
float for goto if inline int long
register restrict return short signed
sizeof static struct switch typedef union
unsigned void volatile while _Alignas
_Alignof _Atomic _Bool _Complex _Generic
_Imaginary _Noreturn _Static_assert
_Thread_local

如需其他 Microsoft 特定關鍵字的清單,請參閱 C 關鍵詞

識別碼

identifier
identifier-nondigit
identifier identifier-nondigit
identifier digit

identifier-nondigit
nondigit
universal-character-name
 其他實作定義的字元

nondigit:下列其中一個
_ 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

digit:下列其中一個
0 1 2 3 4 5 6 7 8 9

universal-character-name
\u hex-quad
\U hex-quad hex-quad

hex-quad
hexadecimal-digit hexadecimal-digit hexadecimal-digit hexadecimal-digit

常數

constant
integer-constant
floating-constant
enumeration-constant
character-constant

integer-constant
decimal-constant integer-suffixopt
binary-constant1 integer-suffixopt
octal-constant integer-suffixopt
hexadecimal-constant integer-suffixopt

decimal-constant
nonzero-digit
decimal-constant digit

binary-constant:1
binary-prefix binary-digit
binary-constant binary-digit

binary-prefix1:其中一個
0b 0B

binary-digit1:其中一個
0 1

octal-constant
0
octal-constant octal-digit

hexadecimal-constant
hexadecimal-prefix hexadecimal-digit
hexadecimal-constant hexadecimal-digit

hexadecimal-prefix:下列其中一個
0x 0X

nonzero-digit:下列其中一個
1 2 3 4 5 6 7 8 9

octal-digit:下列其中一個
0 1 2 3 4 5 6 7

hexadecimal-digit:下列其中一個
0 1 2 3 4 5 6 7 8 9
a b c d e f
A B C D E F

integer-suffix
unsigned-suffix long-suffixopt
unsigned-suffix long-long-suffixopt
long-suffix unsigned-suffixopt
long-long-suffix unsigned-suffixopt

unsigned-suffix:下列其中一個
u U

long-suffix:下列其中一個
l L

long-long-suffix:下列其中一個
ll LL

floating-constant
decimal-floating-constant
hexadecimal-floating-constant

decimal-floating-constant
fractional-constant exponent-partopt floating-suffixopt
digit-sequence exponent-part floating-suffixopt

hexadecimal-floating-constant
hexadecimal-prefix hexadecimal-fractional-constant binary-exponent-partopt floating-suffixopt
hexadecimal-prefix hexadecimal-digit-sequence binary-exponent-part floating-suffixopt

fractional-constant
digit-sequenceopt . digit-sequence
digit-sequence .

exponent-part
e signopt digit-sequence
E signopt digit-sequence

sign:下列其中一個
+ -

digit-sequence
digit
digit-sequence digit

hexadecimal-fractional-constant
hexadecimal-digit-sequenceopt . hexadecimal-digit-sequence
hexadecimal-digit-sequence .

binary-exponent-part
p signopt digit-sequence
P signopt digit-sequence

hexadecimal-digit-sequence
hexadecimal-digit
hexadecimal-digit-sequence hexadecimal-digit

floating-suffix:下列其中一個
f l F L

enumeration-constant
identifier

character-constant
' c-char-sequence '
L' c-char-sequence '

c-char-sequence
c-char
c-char-sequence c-char

c-char
 來源字元集的任何成員,單引號 (')、反斜線 (\) 或新行字元除外
escape-sequence

escape-sequence
simple-escape-sequence
octal-escape-sequence
hexadecimal-escape-sequence
universal-character-name

simple-escape-sequence:下列其中一個
\a \b \f \n \r \t \v
\' \" \\ \?

octal-escape-sequence
\ octal-digit
\ octal-digit octal-digit
\ octal-digit octal-digit octal-digit

hexadecimal-escape-sequence
\x hexadecimal-digit
hexadecimal-escape-sequence hexadecimal-digit

字串常值

string-literal
encoding-prefix " s-char-sequenceopt "

encoding-prefix
u8
u
U
L

s-char-sequence
s-char
s-char-sequence s-char

s-char
 來源字元集的任何成員,雙引號 (")、反斜線 (\) 或新行字元除外
escape-sequence

標點符號

punctuator:下列其中一個
[ ] ( ) { } . ->
++ -- & * + - ~ !
/ % << >> < > <= >= ==
!= ^ | && || ? : ; ...
= *= /= %= += -= <<= >>=
&= ^= |= , # ##
<: :> <% %> %: %:%:

標頭名稱

header-name
< h-char-sequence >
" q-char-sequence "

h-char-sequence
h-char
h-char-sequence h-char

h-char
 來源字元集的任何成員,新行字元和 > 除外

q-char-sequence
q-char
q-char-sequence q-char

q-char
 來源字元集的任何成員,新行字元和 " 除外

前置處理數字

pp-number
digit
. digit
pp-number digit
pp-number identifier-nondigit
pp-number e sign
pp-number E sign
pp-number p sign
pp-number P sign
pp-number .

1 binary-constantbinary-prefixbinary-digit 是 Microsoft 特定的擴充功能。

另請參閱

C 語言語法摘要