关于表达和陈述的语言概念

时间:2012-05-02 06:39:46

标签: programming-languages

任何计算机语言都有'表达'和'陈述'。在概念上,什么是差异?

4 个答案:

答案 0 :(得分:5)

取自wikipedia

  

在大多数语言中,语句与表达式形成鲜明对比   语句不返回结果,仅为其执行   副作用,而表达式总是返回结果并经常这样做   根本没有副作用。在命令式编程语言中,   Algol 68是声明可以返回结果的少数几个之一。   在混合命令式和功能性风格的语言中,例如   Lisp系列,表达式和语句之间的区别不是   made:甚至在连续上下文中执行的表达式仅用于   考虑他们的副作用和不使用其返回值   “表情”。在纯功能编程中,没有   报表;一切都是表达。

答案 1 :(得分:2)

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

答案 2 :(得分: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 ...

答案 3 :(得分:0)

语言的“陈述”实际上是计算机系统做某事的指示。

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

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