20-表达式
5.4.1 表达式
表达式(expression)由运算符和运算对象组成(前面介绍过,运算对象是运算符操作的对象)。最简单的表达式是一个单独的运算对象,以此为基础可以建立复杂的表达式。下面是一些表达式:
4
-6
4+21
a*(b + c/d)/20
q = 5*2
x = ++q % 3
q > 3
如你所见,运算对象可以是常量、变量或二者的组合。一些表达式由子表达式(subexpression)组成(子表达式即较小的表达式)。例如, c/d 是上面例子中 a * (b + c/d)/20 的子表达式。
每个表达式都有一个值
C表达式的一个最重要的特性是,每个表达式都有一个值。要获得这个值,必须根据运算符优先级规定的顺序来执行操作。在上面我们列出的表达式中,前几个都很清晰明了。但是,有赋值运算符( = )的表达式的值是什么?这些表达式的值与赋值运算符左侧变量的值相同。因此,表达式 q = 5 * 2 作为一个整体的值是 10 。那么,表达式 q > 3 的值是多少?这种关系表达式的值不是 0 就是 1 ,如果条件为真,表达式的值为 1 ;如果条件为假,表达式的值为 0 。表5.2列出了一些表达式及其值:
| 表达式 | 值 |
| :----- | :----- | :----- | :----- |
| -4 + 6 | 2 |
| c = 3 + 8 | 11 |
| 5 > 3 | 1 |
| 6 + (c = 3 + 8) | 17 |
虽然最后一个表达式看上去很奇怪,但是在C中完全合法(但不建议使用),因为它是两个子表达式的和,每个子表达式都有一个值。