我问的是关于c#的问题,但我认为它在大多数其他语言中都是一样的。
有人对表达式和语句有很好的定义吗?它们的区别是什么?
我问的是关于c#的问题,但我认为它在大多数其他语言中都是一样的。
有人对表达式和语句有很好的定义吗?它们的区别是什么?
当前回答
下面是我找到的一个最简单的答案。
原文由Anders Kaseorg回答
语句是执行某些操作的完整代码行,而表达式是代码中求值的任何部分。
可以使用操作符将表达式“水平”组合成更大的表达式,而语句只能通过一个接一个地写入或使用块结构来“垂直”组合。
每个表达式都可以用作语句(其效果是计算表达式并忽略结果值),但大多数语句不能用作表达式。
http://www.quora.com/Python-programming-language-1/Whats-the-difference-between-a-statement-and-an-expression-in-Python
其他回答
表达式是产生一个值的任何东西:2 + 2 语句是程序执行的基本“块”之一。
注意,在C语言中,“=”实际上是一个运算符,它做两件事:
返回右边子表达式的值。 将右边子表达式的值复制到左边的变量中。
下面是一段ANSI C语法的摘录。你可以看到C语言没有很多不同种类的语句……程序中的大多数语句都是表达式语句,即结尾带有分号的表达式。
statement
: labeled_statement
| compound_statement
| expression_statement
| selection_statement
| iteration_statement
| jump_statement
;
expression_statement
: ';'
| expression ';'
;
http://www.lysator.liu.se/c/ANSI-C-grammar-y.html
你可以在维基百科上找到这个,但是表达式被求值为某个值,而语句没有求值。
因此,表达式可以用在语句中,但不能用在语句中。
请注意,一些语言(如Lisp,我相信Ruby,以及许多其他语言)并不区分语句和表达式……在这样的语言中,所有东西都是一个表达式,并且可以与其他表达式连接。
语句->按顺序执行的指令 表达式->返回值的求值
语句基本上就像算法中的步骤或指令,语句执行的结果是指令指针的实现(所谓的汇编程序)。
表达式乍一看并不意味着和执行顺序,它们的目的是求值并返回值。在命令式编程语言中,表达式的求值是有顺序的,但这只是命令式模型的原因,而不是它们的本质。
语句示例:
for
goto
return
if
(所有这些都意味着执行的行(语句)提前到另一行)
表达式示例:
2+2
(这并不是指执行,而是指评估)
下面是我找到的一个最简单的答案。
原文由Anders Kaseorg回答
语句是执行某些操作的完整代码行,而表达式是代码中求值的任何部分。
可以使用操作符将表达式“水平”组合成更大的表达式,而语句只能通过一个接一个地写入或使用块结构来“垂直”组合。
每个表达式都可以用作语句(其效果是计算表达式并忽略结果值),但大多数语句不能用作表达式。
http://www.quora.com/Python-programming-language-1/Whats-the-difference-between-a-statement-and-an-expression-in-Python
表达式
一段可以求值的语法。换句话说,表达式是表达式元素的累积,如字面量、名称、属性访问、操作符或函数调用,它们都返回一个值。与许多其他语言相比,并不是所有的语言结构都是表达式。还有一些语句不能用作表达式,比如while。赋值也是语句,而不是表达式。
声明
语句是套件(代码“块”)的一部分。语句可以是表达式,也可以是带有关键字的几个结构之一,如if、while或for。