语句和关键字有啥区别?

Posted

技术标签:

【中文标题】语句和关键字有啥区别?【英文标题】:What is the difference between a statement and a keyword?语句和关键字有什么区别? 【发布时间】:2014-05-26 21:03:26 【问题描述】:

calling return a statement 之后,在 cmets 中给我带来了:

return 不是语句,它是开始返回语句的关键字。

语句开始语句的关键字有什么区别?

【问题讨论】:

句子和以句子开头的名词有什么区别? ;-) @delnan 这是否意味着return 是一个关键字,而return true; 是一个语句 @delnan 很好的解释,它很好地澄清了事情!如果您将其添加为完整答案(进一步扩展一点),我将非常高兴,以便我可以接受。 【参考方案1】:

我的语言律师指出,C 标准 n1570 如下所述。

S6.4.1 关键字包括:

返回

S6.8 说:

语句指定要执行的操作。

S6.8.6。 return 语句被定义为包含分号。

返回表达式(选择);

回答这个问题,如果不像其他一些答案那样有趣的话。

【讨论】:

【参考方案2】:

句子和以句子开头的名词有什么区别? ;-)

return 是一个关键字,这意味着它是该语言的几个基本术语(标记)之一。它们具有特权,每个都保留用于特殊目的并具有特殊含义(将此与工厂标识符/名称的运行进行比较)。

语句是(广义上的 - 语言之间的具体差异)语言的更高级别单元,类似于自然语言中的(特定种类的)句子。语句包括return 1+1;foo(bar);,但一般不包括1+1foo(bar) 之类的表达式。

关键字通常构成语句的一部分(例如,return 引入了一个 return 语句),但它们从不单独做出完整的语句 - 即使 return; 仍然需要一个语句终止符。

【讨论】:

关于最后一句,这种情况下的分号会是必需的语句终止符吗? @IQAndreas 在我的示例中,我使用了类似 C 的语法。其他语言有其他语句终止符(Python 中的换行符)或语句分隔符(Pascal 中的begin stmt1; stmt2 end)。实际上,有些语言根本没有语句的概念。【参考方案3】:

关键字(有时称为保留字)是在编程语言中具有特殊含义的某个词。例如,在 C、C++ 和 Java 中,intvoidbreak 是关键字,而在 Python 中 def 是关键字。

在命令式编程语言中,语句是程序应该执行的命令。比如语句

x = y * 137;

表示“评估表达式x = y * 137”,而语句

while (true) 
    x++;

表示“永远继续增加x。”

某些关键字可以在语句中使用。比如语句

break;

表示“跳出当前循环”,而语句

return true;

(由returntrue 关键字组成)表示“退出当前函数/方法,产生结果true”。这些分别称为“break statements”和“return statements”,以这种方式使用这些术语并没有错。但是,breakreturn 本身并不是陈述。注意语法是

break;

用分号和

return [opt-value];

带有可选值和分号。我认为说调用 returnbreak 语句是不正确的有点牵强,因为虽然这样做在技术上是不正确的,但每个人都会明白你的意思。

请注意,有些语句可能由关键字组成,但并非所有关键字都是语句。比如你不能写

public;

volatile;

使用我知道的任何编程语言。

希望这会有所帮助!

【讨论】:

非常轻微的吹毛求疵:关键字和保留字重叠并且经常被放在一起,但又是不同的:有些字被保留但没有给它们关键字状态,它们没有意义并且不能使用(例如@ 987654342@ 在 Java 中)。另一方面,上下文关键字(例如 C# 中的 yield)在特定位置用作关键字,但不是保留的,可以在任何允许标识符的地方用作标识符。

以上是关于语句和关键字有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

左连接和右连接有啥区别

union 和 join 和有啥不一样?

union 和 join 和有啥不一样?

SQL数据库中查询语句Order By和Group By有啥区别

“关键字”和“别名类型”有啥区别? [复制]

关键字符号和引用符号有啥区别?