53

关键字保留字有什么区别?

例如,在 C++ 概念提案中,可以阅读以下声明:

该提案引入了五个新关键字:概念、概念图、where、公理和后期检查。所有这些关键字也将是保留字。

4

10 回答 10

61

关键字在语言中具有特殊含义,并且是语法的一部分。

保留字是不能用作标识符(变量、函数等)的字,因为它们是由语言保留的。

在实践中,大多数关键字都是保留字,反之亦然。但是因为它们是两个不同的东西,所以可能会发生关键字不是保留字(例如,关键字仅在特殊上下文中有意义,因此可以用作标识符),或者保留字不是关键字(例如,因为它是为将来使用而保留的)。

更新:其他人给出的一些例子说明了区别:

  • 在 Java 中,goto是保留字,但不是关键字(因此,您根本不能使用它)
  • Fortran没有保留字,所有关键字(if、then 等)都可以用作标识符
于 2009-07-03T11:22:22.917 回答
18

只是为了表明这种区别是非常有意义的:

并非所有语言中的所有关键字都是保留字。在 Fortran 中可以这样做:

if if then then else else

在这种情况下,关键字不是保留的,但根据上下文可以由编译器解释为变量。

于 2009-07-03T11:30:43.927 回答
10

这种区别的一个很好的例子是 Java 中的“goto”。它不是语言关键字(即它不是有效的 Java),但它一个保留字。

似乎 java 设计者告诉我们“我们不会使用'goto',你也不会”。

于 2009-07-03T11:25:56.293 回答
5

Wiki 说:“关键字是仅在某些上下文中特殊的词,而保留词是不能用作用户定义名称的特殊词。”

http://en.wikipedia.org/wiki/Reserved_word#Reserved_word_vs._keyword

于 2009-07-03T11:20:31.143 回答
1

我猜关键字是用作“关键字”的单词(例如 if、for、switch 等),而保留字是不能用作变量名的东西,因为它可能会成为未来版本的语言中的关键字。

于 2009-07-03T11:20:07.773 回答
1
  • 关键字:它有一些含义,我们可以在程序中使用。
  • 保留字:不能在程序中使用。它们将来可能会被使用。例子:goto
于 2010-10-10T13:16:45.503 回答
0

真的,这在很大程度上取决于上下文。例如,ISO C++ 标准说“if”、“while”、“int”等是关键字,实际上并没有使用术语reserved word,除非在脚注中出现过一次,其中可能有其他内容意思是:-)

标准 DOE 指定保留名称- 例如,以下划线和大写字母开头的所有名称都是保留名称。

于 2009-07-03T11:25:43.657 回答
0

关键字:关键字对编译器有一些特殊的功能。所以关键字不能用作编码中的标识符。保留字:保留字是保留供将来使用的字。在 java 中,const 和 goto 是保留字,目前没有使用,将来可能会带回 java。如果我们在这里查看 Java 语言关键字 ( https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html ),它说 java(我猜是最新的)有 50 个关键字,包括 goto 和 const。所以 goto 和 const 是保留的关键字。

于 2016-09-24T15:18:26.673 回答
-1

保留字和关键字大多相同,它们在GW-BASIC...中具有预定义的含义,它们具有预定义的用途,不能在 Basic 中用于或重新定义用于任何其他目的。关键字不能用作变量名。Basic 的一些关键字是... IF, THEN,WHILE等等。

于 2012-01-07T06:52:06.453 回答
-1

关键字,-在特定上下文中具有特殊含义的词。这是语义定义。

保留字 是不能用作标识符的字,例如变量和函数名。这是句法定义。

例如在 Java 中,所有关键字都是保留字。可能不是反过来。goto 是保留字,但未使用,没有任何功能。

在像 FORTRAN 这样的旧语言中,有关键字但没有保留字。

但是,关键字和保留字可以互换使用。

于 2017-06-05T18:59:49.167 回答