表达式,一般有操作数和操作符组成。要问表达式和语句的区别,百度截取的一个回答:
而在Accelerated C++ 一书中说到:“当一个表达式后面紧跟一个分号时,就表明系统让我们丢掉这个返回值 ”见第《Accelerated C++》0章的第7节。
也就是说,表达式从宏观上讲具体两大作用:
1、表达式一定会返回一个值!(有且只有一个值)
2、整个表达式在计算时产生的变化。这个作用往往别称之为表达式的副作用!
于是我想了到宏,宏就没有分号,如:带参数的宏还能像函数一样返回一个值!结合表达式的第一个作用就很好理解了。
还有在if判断里也是(没有分号的)表达式,如if(1+(a = b -1))这个表达式看起来奇葩,但是也是符合语法的。a = b - 1就是一个表达式,他其实就一个值!只不过这个表达式的返回值和a的值是一致的。所以很多复杂的表达式如果你将其看成一个值,就会简化不少。当然如何看,必须结合“优先级”以及“结合律”来看了。具体内容请看下节,《编程语法分析之“优先级”和“结合律”》。
再联想一下函数,函数分为有返回值和没有返回值的函数。
一、有返回值的函数和“表达式”一样,有两大作用:
1、有返回值的函数一定会返回一个值!(有且只有一个值)
2、整个函数内容在计算时产生的变化。
二、没有返回值的函数就好比“语句”不在结果,而在乎过程中发生的变化。
我在百度上找到一个回答,深以为然:
于是乎,有了一点感悟:(题外话)
一个问题想不通,无外乎两点:
1、没有认清本质
2、需要根据条件,分类讨论(总有例外)