1

任何计算机语言都有“表达”和“陈述”。在概念上,有什么区别?

4

4 回答 4

5

取自维基百科

在大多数语言中,语句与表达式的不同之处在于语句不返回结果并且仅因其副作用而执行,而表达式总是返回结果并且通常根本没有副作用。在命令式编程语言中,Algol 68 是为数不多的语句可以返回结果的语言之一。在混合了命令式和函数式风格的语言中,例如 Lisp 家族,表达式和语句之间没有区别:即使是在顺序上下文中执行的仅出于副作用且未使用其返回值的表达式也被视为“表达式”。在纯函数式编程中,没有语句;一切都是一种表达。

于 2012-05-02T06:44:59.817 回答
2

表达式有值,而语句没有。如果您可以将它作为参数传递给函数,那么它就是一个表达式。如果你不能,这是一个声明。C 派生语言中的控制流构造通常是语句(您不能将“if {}”块作为函数参数传递)。因此,这些语言倾向于为“if”提供一种表达形式(如三元运算符)。当然,许多函数式语言的全部意义在于一切都有一个值,而函数是一等值,这意味着一切都是一个表达式。语句通常出现在命令式语言中,您希望编写不一定返回值的命令。有关详细信息,请参阅链接。
http://lambda-the-ultimate。

表达与陈述

于 2012-05-02T06:44:51.560 回答
0

statements通常没有值。expressions通常确实有一个价值。

这在诸如 Ruby 或 Erlang 之类的语言中通常是可见的,它们为诸如if .. end构造之类的东西提供了一个值:

> foo = if 1 then "hello" else "goodbye" end
=> "hello"
> foo
=> "hello"
1> Foo = if 1 =:= 1 ->
1>   hello;
1> true ->
1>   goodbye
1> end.
hello
2> 

许多语言不允许您使用lvalue = if ....

于 2012-05-02T06:45:39.800 回答
0

语言的“语句”实际上是计算机系统做某事的指令。

语言的“表达式”是运算符和操作数的组合,例如 z=x+y。粗略地说,语言表达式本质上是数学的。

每一种语言的“表达”都是一种语言的“陈述”,但每一种语言的“陈述”都不是一种语言的“表达”。

于 2012-05-02T06:55:57.770 回答