我们说快递"评估"值和语句命令计算机执行"执行"。但对我来说,似乎是相同的术语。 C中的执行和评估之间有什么区别?
答案 0 :(得分:4)
当执行一个语句时,它会进行评估其表达式的操作。首先执行然后进行评估。
在摘录
中int i = 5, j;
j = 10 + 5*i;
执行语句j = 10 + 5*i;
时,会对表达式j
,10
,5*i
,10 + 5*i
和j = 10 + 5*i
进行评估。请注意,前三个可以按任何顺序进行评估。
答案 1 :(得分:4)
这只是一个语言学问题。表达式被评估,语句被执行。在这两种情况下,我们都可以说“有些事情已经完成”,我不会过分担心这种差异。
澄清:粗略地说,语句是一行代码,表达式是您可以在if()
或while()
或等号右侧的括号中找到的表达式。
例如,int x = 2 + 3;
是一个声明变量x
的语句,并为其指定表达式2 + 3
的结果,即5
。
答案 2 :(得分:3)
在几乎所有情况下,它都非常接近无关紧要。
如果我们要非常精确,我会说评估产生结果值并且不会改变状态,而执行会改变状态,结果值不会产生或偶然被忽略。
一般来说,我们评估表达式,我们执行语句。
因此,例如,如果我们在C中有if
语句,我们首先评估条件,然后执行(或不执行)主体。
混淆被放大了,因为在C中我们有表达式来改变状态(赋值运算符,递增/递减运算符)和只是表达式的语句。
所以当你看到
a = b+c;
在C中,它是一个执行的语句,但是执行包括评估表达式a=b+c
,其中结果(对a
的非const引用)被丢弃,并且效果(a
改变其价值)很重要。
答案 3 :(得分:0)
我想到的方式是:“表达”一词来自数学术语。评估为defined as:
<强>评估强>
评估是要找到数值或代数表达式的值。
表达式有following definition :(为强调添加了粗体)
编程语言中的表达式是编程语言解释的一个或多个显式值,常量,变量,运算符和函数的组合(根据其特定的优先级和关联规则) )和计算产生(“返回”,在有状态的环境中)另一个值。
在编程中,几乎每个语句(或每个值得写的语句)都由许多表达式组成。我总是使用评估来引用这些表达式的计算,并使用 execution 来引用整个语句的计算。这通常与返回值和副作用的区别相吻合。完整语句通常有副作用,表达式通常会返回某种值。