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 回答
1

评论不算作记号。空格、换行符、制表符也不算作记号。所以,肯定有 10 个令牌。

于 2019-02-01T15:53:34.320 回答