用操作符把操作数连接起来符合语法的式子就是表达式。本章讨论赋值表达式、算术表达式和逗号表达式。
数学中先乘除后加减,C语言中也是优先级高的操作符先执行。由于+号的优先级更高,故表达式c = a + b的求值顺序是先加再赋值。优先级相同时,多采用左结合,即谁在左边先算谁。C语言是高级程序设计语言,相同功能的操作符的相对优先级和结合性与数学中的一致。C语言中也是“先乘除后加减;只有乘除或加减时,谁在左边先算谁”。为了使代码简洁,C语言中有三类操作符是右结合,即谁在右边先算谁。
C语言表达式有一个确定的值。表达式a = 3的作用是把变量a赋值为3,但它也有值。与有返回值函数的执行结果类似,所有表达式的执行结果都表现为一个具体值。
类型不同的数据的编码规则不同,因此,计算机中只有同类型的数据才能进行算术运算。受运算器种类的限制,只有规定类型的同类型数据才能进行算术运算。尽管算术表达式中的运算是常见的加减乘除,但算术表达式的求值要比数学中的复杂许多。
逗号操作符用于将多条语句转化为一个逗号表达式。为了实现这一功能,不仅要求逗号操作符带序列点以屏蔽操作符优先级的影响,而且要求逗号操作符的优先级最低。
表达式的求值规则是先考虑序列点、再考虑优先级和结合性。分析表达式时,先确定操作符的求值顺序,再依次执行操作符命令。只要能求出表达式的值,表达式就合法。
C语言是精心设计的编程语言,许多语法规则都有内在的逻辑。思考规则背后蕴含的道理有助于加深对编程语言的理解。
种类繁多的操作符使得C语言不仅灵活,而且功能强大。算法中的许多步骤都需翻译成C语言表达式,只有精通C语言表达式,才能熟练地用表达式指挥计算机解决实际问题。养成以加圆括号的方式分析表达式求值顺序的习惯。