“关键字”和“保留字”有什么区别?

时间:2009-07-03 11:17:44

标签: language-agnostic programming-languages syntax keyword reserved-words

关键字保留字之间的区别是什么?

例如,在proposal for concepts in C++中可以阅读以下语句:

  

此提案引入了五个新关键字:概念,概念图,where,axiom和late check。所有这些关键字也将是   保留字。

10 个答案:

答案 0 :(得分:56)

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

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

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

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

  • 在Java中,goto是保留字,但不是关键字(因此,您根本无法使用它)
  • Fortran有没有保留字,所有关键字(if,then等)都可以用作标识符

答案 1 :(得分:17)

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

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

if if then then else else

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

答案 2 :(得分:8)

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

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

答案 3 :(得分:5)

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

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

答案 4 :(得分:1)

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

答案 5 :(得分:1)

  • 关键字:它有一些含义,我们可以在程序中使用。
  • 保留字:我们不能在程序中使用。它们将来可能会被使用。 示例:goto

答案 6 :(得分:0)

真的很大程度上取决于背景。例如,ISO C ++标准表示“if”,“while”,“int”等内容是关键字,并且实际上并未使用术语保留字,除了一次,在脚注中,其他东西可能意味着: - )

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

答案 7 :(得分:0)

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

答案 8 :(得分:-1)

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

答案 9 :(得分:-1)

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

保留字是一个不能用作标识符的字词 -   例如,变量和函数名称。它的语法定义。

例如,在Java中,所有关键字都是保留字。可能不是相反的。   goto是保留字但未使用且没有功能。

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

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