7

次の C ステートメントのトークンの数。

printf("i = %d, &i = %x", i, &i);

ここには12個のトークンがあると思います。しかし、私の答えは間違っています。

上記の C ステートメントでトークンを見つける方法を誰か教えてもらえますか?

PS: トークンとは、コンパイラがコンポーネント要素に分解しないソース プログラム テキストであることを知っています。

4

4 に答える 4

10

私がCコードの解析を理解している限り、トークンは(合計10個)です。

printf
(
"i = %d, &i = %x"
,
i
,
&
i
)
;

私は空白を数えません。それは一般的に無意味であり、他のトークン間の区切り文字としてのみ機能します。また、文字列リテラルはそれ自体の不可欠なエンティティであるため、文字列を細かく分割しません。

于 2012-10-13T13:58:02.643 に答える
4

これは学校の課題などに非常によく似ていますが、空白がカウントされるかどうかによって異なります:10または12(または、空白がカウントされ、末尾の改行がある場合は13)

'printf' '(' '"i = %d, &i = %x"' ',' 'i' ',' '&' 'i' ')' ';'
  1       2     3                4   5   6   7   8   9  10
于 2012-10-13T13:58:55.593 に答える
3

はい、全部で 10 個のトークンです。引用符で囲まれた文字は、字句解析器 (LA) によって単一のトークンとして扱われるためです。これは LA のプロパティです。

于 2015-10-12T14:06:37.160 に答える