执行和评估之间有什么区别?

问题描述 投票:8回答:4

我们说表达式“评估”值和语句命令计算机“执行”。但对我来说,似乎是相同的术语。 C中的执行和评估有什么区别?

c execution evaluation
4个回答
4
投票

当一个语句被执行时,它将涉及其表达式的评估行为。首先执行然后进行评估。

在片段中

int i = 5, j;
j = 10 + 5*i;

当执行语句j = 10 + 5*i;然后评估表达式j105*i10 + 5*ij = 10 + 5*i。请注意,前三个可以按任何顺序进行评估。


4
投票

这只是一个语言学问题。表达式被评估,语句被执行。在这两种情况下,我们都可以说“有些事情已经完成”,我不会过分担心这种差异。

澄清:粗略地说,语句是一行代码,表达式是你可以在if()while()中的括号之间找到的,或者在等号的右边。

例如,int x = 2 + 3;是一个声明变量x的语句,并为其指定表达式2 + 3的结果,即5


3
投票

几乎在所有情况下,它都非常接近并不重要。

如果我们要非常精确,我会说评估会产生一个结果值并且不会改变状态,而执行会改变状态,结果值要么不产生要么是偶然的并被忽略。

一般来说,我们评估表达式,我们执行语句。

因此,例如,如果我们在C中有一个if语句,我们首先评估条件,然后我们执行(或不执行)正文。

混淆被放大,因为在C中我们有表达式来改变状态(赋值运算符,递增/递减运算符)和只是表达式的语句。

所以当你看到

a = b+c;

在C中,它是一个执行的语句,但执行包括评估表达式a=b+c,其中结果(对a的非const引用)被丢弃,副作用(a改变其值)很重要。


1
投票

我想到的方式是:“表达”一词来自数学术语。评估是defined as

评估

评估是要找到数值或代数表达式的值。

表达式有following definition :(为了强调增加了粗体字)

编程语言中的表达式是编程语言解释的一个或多个显式值,常量,变量,运算符和函数的组合(根据其特定的优先级和关联规则)并计算生成(“返回”) ,在有状态的环境中)另一个价值。

在编程中,几乎每个语句(或每个值得写的语句)都由许多表达式组成。我总是使用评估来指代这些表达式和执行的计算,以引用整个语句的计算。这通常与返回值和副作用的区别相吻合。完整语句通常有副作用,表达式通常会返回某种值。

© www.soinside.com 2019 - 2024. All rights reserved.