我问的是关于c#的问题,但我认为它在大多数其他语言中都是一样的。
有人对表达式和语句有很好的定义吗?它们的区别是什么?
我问的是关于c#的问题,但我认为它在大多数其他语言中都是一样的。
有人对表达式和语句有很好的定义吗?它们的区别是什么?
当前回答
我更喜欢“陈述”这个词的形式逻辑意义。它改变了计算中一个或多个变量的状态,从而能够对它们的值做出真或假的声明。
我想,当新的术语或词汇被引入,现有的词汇被“重新定义”,或者用户对他们所描述的现有的、已建立的或“适当的”术语一无所知时,在计算世界和科学中总会出现困惑
其他回答
声明中,
语句是构造所有c#程序的过程构建块。语句可以声明局部变量或常量,调用方法,创建对象,或为变量、属性或字段赋值。
由花括号括起来的一系列语句构成了一个代码块。方法体就是代码块的一个例子。
bool IsPositive(int number)
{
if (number > 0)
{
return true;
}
else
{
return false;
}
}
c#中的语句通常包含表达式。c#中的表达式是包含文字值、简单名称或操作符及其操作数的代码片段。
表达式,
表达式是可以计算为单个值、对象、方法或名称空间的代码片段。最简单的两种表达式是字面量和简单名称。字面量是一个没有名字的常量值。
int i = 5;
string s = "Hello World";
i和s都是用来标识局部变量的简单名称。当在表达式中使用这些变量时,将检索变量的值并将其用于表达式。
表达式是产生一个值的任何东西: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
我对这里的答案都不太满意。我查看了c++ (ISO 2008)的语法。然而,出于教学和编程的考虑,答案可能足以区分这两个元素(尽管现实看起来更复杂)。
语句由零个或多个表达式组成,但也可以是其他语言概念。这是语法的扩展巴克斯诺尔形式(语句节选):
statement:
labeled-statement
expression-statement <-- can be zero or more expressions
compound-statement
selection-statement
iteration-statement
jump-statement
declaration-statement
try-block
我们可以看到c++中被认为是语句的其他概念。
表达式-语句是自解释的(一个语句可以由0个或多个表达式组成,仔细阅读语法,这很棘手) 例如,Case是一个带标签的语句 选择语句是if if/else, case 迭代语句是while, do…然而,对于(……) 跳转语句有break, continue, return(可以返回表达式),goto Declaration-statement是声明的集合 try-block是表示try/catch块的语句 在语法中可能还有更多
以下是表达部分的节选:
expression:
assignment-expression
expression "," assignment-expression
assignment-expression:
conditional-expression
logical-or-expression assignment-operator initializer-clause
throw-expression
表达式通常是或包含赋值 条件表达式(听起来容易误导人)指的是使用运算符(+,-,*,/,&,|,&&,||,…) 抛出表情——呃?throw子句也是一个表达式
我更喜欢“陈述”这个词的形式逻辑意义。它改变了计算中一个或多个变量的状态,从而能够对它们的值做出真或假的声明。
我想,当新的术语或词汇被引入,现有的词汇被“重新定义”,或者用户对他们所描述的现有的、已建立的或“适当的”术语一无所知时,在计算世界和科学中总会出现困惑
下面是我找到的一个最简单的答案。
原文由Anders Kaseorg回答
语句是执行某些操作的完整代码行,而表达式是代码中求值的任何部分。
可以使用操作符将表达式“水平”组合成更大的表达式,而语句只能通过一个接一个地写入或使用块结构来“垂直”组合。
每个表达式都可以用作语句(其效果是计算表达式并忽略结果值),但大多数语句不能用作表达式。
http://www.quora.com/Python-programming-language-1/Whats-the-difference-between-a-statement-and-an-expression-in-Python