我问的是关于c#的问题,但我认为它在大多数其他语言中都是一样的。

有人对表达式和语句有很好的定义吗?它们的区别是什么?


当前回答

我更喜欢“陈述”这个词的形式逻辑意义。它改变了计算中一个或多个变量的状态,从而能够对它们的值做出真或假的声明。

我想,当新的术语或词汇被引入,现有的词汇被“重新定义”,或者用户对他们所描述的现有的、已建立的或“适当的”术语一无所知时,在计算世界和科学中总会出现困惑

其他回答

为了解释表达式和语句在可组合性(可链接性)方面的重要区别,我最喜欢的参考文献是John Backus的图灵奖论文《编程可以从冯·诺伊曼风格中解放出来吗?》

命令式语言(Fortran, C, Java,…)强调用语句来构造程序,并有表达式作为一种事后思考。函数式语言强调表达式。纯函数式语言具有如此强大的表达式,以至于可以完全消除语句。

声明中,

语句是构造所有c#程序的过程构建块。语句可以声明局部变量或常量,调用方法,创建对象,或为变量、属性或字段赋值。

由花括号括起来的一系列语句构成了一个代码块。方法体就是代码块的一个例子。

bool IsPositive(int number)
{
    if (number > 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

c#中的语句通常包含表达式。c#中的表达式是包含文字值、简单名称或操作符及其操作数的代码片段。

表达式,

表达式是可以计算为单个值、对象、方法或名称空间的代码片段。最简单的两种表达式是字面量和简单名称。字面量是一个没有名字的常量值。

int i = 5;
string s = "Hello World";

i和s都是用来标识局部变量的简单名称。当在表达式中使用这些变量时,将检索变量的值并将其用于表达式。

下面是我找到的一个最简单的答案。

原文由Anders Kaseorg回答

语句是执行某些操作的完整代码行,而表达式是代码中求值的任何部分。

可以使用操作符将表达式“水平”组合成更大的表达式,而语句只能通过一个接一个地写入或使用块结构来“垂直”组合。

每个表达式都可以用作语句(其效果是计算表达式并忽略结果值),但大多数语句不能用作表达式。

http://www.quora.com/Python-programming-language-1/Whats-the-difference-between-a-statement-and-an-expression-in-Python

你可以在维基百科上找到这个,但是表达式被求值为某个值,而语句没有求值。

因此,表达式可以用在语句中,但不能用在语句中。

请注意,一些语言(如Lisp,我相信Ruby,以及许多其他语言)并不区分语句和表达式……在这样的语言中,所有东西都是一个表达式,并且可以与其他表达式连接。

表达式是返回值的东西,而语句则不是。

例子:

1 + 2 * 4 * foo.bar()     //Expression
foo.voidFunc(1);          //Statement

两者之间的重要之处在于,您可以将表达式链接在一起,而语句则不能被链接。