[英]What is the difference between “keyword” and “reserved word”?
关键字在语言中具有特殊含义,并且是语法的一部分。
保留字是不能用作标识符(变量,函数等)的字,因为它们是由语言保留的。
实际上,大多数关键字都是保留字,反之亦然。 但是因为它们是两个不同的东西,关键字不是保留字可能会发生(例如,关键字只在特殊上下文中有意义,因此可以用作标识符),或者保留字不是关键字(例如,因为它留作将来使用)。
更新:其他一些例子说明了区别:
goto
是保留字但不是关键字(因此,根本不能使用它) 只是为了表明这种区别非常有意义:
不是所有语言都是关键字保留字。 在Fortran中可以这样做:
if if then then else else
在这种情况下,关键字不是保留的,但是根据上下文可以由编译器解释为变量。
这种区别的一个很好的例子是Java中的“goto”。 它不是语言关键字(即它不是有效的Java),但它是一个保留字。
似乎java设计师告诉我们“我们不会使用'goto',而你也不会”。
Wiki说这个“关键字是一个仅在某些上下文中特殊的词,但保留词是一个不能用作用户定义名称的特殊词。”
http://en.wikipedia.org/wiki/Reserved_word#Reserved_word_vs._keyword
我猜关键字是一个用作“关键字”的单词(如if,for,switch等等),而保留字则不能用作变量名,因为它可能会成为该语言未来版本中的关键字。
goto
真的很大程度上取决于背景。 例如,ISO C ++标准说“if”,“while”,“int”等等是关键字 ,并且实际上并没有使用术语保留字 ,除了一次,在脚注中,其他东西可能是意思是:-)
标准的doe指定保留名称 - 例如,所有以下划线和大写字母开头的名称都是保留名称。
关键词:关键词对编译器有一些特殊的功能。 因此,关键字不能用作编码中的标识符。 保留字:保留字是保留供将来使用的字。 在java中,const和goto是当前未使用的保留字,并且可能在将来被带回java。 如果我们在这里查看Java语言关键字( https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html ),它说java(最新的我猜)有50个关键字,包括goto和const。 所以goto和const是保留的关键字。
keyword , - 在特定上下文中具有特殊含义的单词。 它是语义定义。
保留字是一个不能用作标识符的单词 - 例如变量和函数名。 这是句法定义。
例如,在Java中,所有关键字都是保留字。 可能不是相反的。 goto是保留字但未使用且没有功能。
在像FORTRAN这样的老语言中,有关键字,但没有保留字。
但是,关键字和保留字可互换使用。
保留字和关键字大多是相同的,它们在GW-BASIC
具有预定义的含义......这些含义具有预先定义的用途,不能在Basic中用于任何其他目的或重新定义。 关键字不能用作变量名。 Basic的一些关键词是...... IF
, THEN
, WHILE
等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.