运算是对数据进行处理和操作的过程,描述各种处理和操作的符号称为 运算符 (也称为 操作符 )。C语言把除了控制语句和输入、输出以外的几乎所有的基本处理和操作都作为运算符处理,因此C语言的运算符的作用范围很宽泛。按照运算符的作用将其分类,如表2-4所示。
表2-4 运算符的分类
(续)
用运算符将操作对象连接起来,符合C语言语法的式子称为 表达式 。表达式具有如下特点:
1)常量和变量都是表达式,例如,常量3.14、变量i都是表达式。
2)运算符的类型对应表达式的类型,例如,算术运算符对应算术表达式。
3)每一个表达式都有自己的值。
表达式的值也可以说是表达式的运算结果,所有表达式的值只有两类:数值和地址(关于地址的概念和相关操作参见第9章)。不管表达式多么复杂,非地址类表达式的运算结果只能是一个数值。
任意一个运算符都具有两个属性:优先级和结合性(结合方向)。
当若干个运算符同时出现在表达式中时,优先级规定了运算的先后次序。如同算术运算中的“先乘除,后加减”一样,乘、除运算符的优先级高于加、减运算符的优先级。由于C语言的运算符种类很多,所以优先级有15级之多。详细说明参见附录C。
C语言把圆括号作为运算符,规定它的优先级最高,为15级,从而保证优先运算圆括号内的式子,逗号运算符的级别最低,为1级。
当若干个具有相同优先级的运算符相邻出现在表达式中时,结合方向规定了运算的先后次序,分为“从左到右”和“从右到左”两个结合方向。
一般来说,大多数运算符的结合方向为“从左到右”,只有单目运算符、赋值运算符和条件运算符的结合方向为“从右到左”,这里单目运算符是指作用于一个操作对象的运算符。
微视频2-4 表达式计算