【问题标题】: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 很好的解释,它很好地澄清了事情!如果您将其添加为完整答案(进一步扩展一点),我将非常高兴,以便我可以接受。

标签: programming-languages terminology keyword


【解决方案1】:

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

S6.4.1 关键字包括:

返回

S6.8 说:

语句指定要执行的操作。

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

返回表达式(选择);

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

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

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

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

    x = y * 137;
    

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

    while (true) {
        x++;
    }
    

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

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

    break;
    

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

    return true;
    

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

    break;
    

    用分号和

    return [opt-value];
    

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

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

    public;
    

    或

    volatile;
    

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

    希望这会有所帮助!

    【讨论】:

    • 非常轻微的吹毛求疵:关键字和保留字重叠并且经常被放在一起,但又是不同的:有些字被保留但没有给它们关键字状态,它们没有意义并且不能使用(例如@ 987654342@ 在 Java 中)。另一方面,上下文关键字(例如 C# 中的 yield)在特定位置用作关键字,但不是保留的,可以在任何允许标识符的地方用作标识符。
    猜你喜欢
    • 2015-09-18
    • 2011-08-28
    • 1970-01-01
    • 2019-04-05
    • 2015-07-28
    • 2010-09-28
    • 2017-12-16
    • 2022-12-22
    • 1970-01-01
    相关资源
    最近更新 更多