购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1 运算符与表达式的分类

运算符的种类多种多样,可按照操作对象数目分类,也可按照功能分类,本书重点介绍后一种。表达式的分类主要按照运算符的不同功能进行分类。

3.1.1 运算符的分类

按照操作对象的多少,运算符主要可分为一元运算符、二元运算符和三元运算符,例如负号(-)为一元运算符,加号(+)为二元运算符等,如表 3-1 所示为不同类型运算符的分类。除了这些基本运算符之外,C语言还支持复合运算符以及sizeof运算符等。

按照功能分类,运算符可分为算术运算符、赋值运算符、逻辑运算符、关系运算符、条件运算符、位运算符、取字节数运算符等。

1. 算术运算符

与数学计算中的数学符号类似,算术运算符主要用于各类数值运算,包括加(+)、减(-)、乘(*)、除(/)、负号(-)、求余(或称模运算%)、自增(++)、自减(--)共 7 种。

2. 赋值运算符

赋值运算符主要用于赋值操作,分为简单赋值运算符(=)、复合算术赋值运算符(+=,-=,*=,/=,%=)和复合位运算赋值运算符(&=,|=,^=,>>=,<<=)3 类共 11 种。

3. 逻辑运算符

逻辑运算符主要用于逻辑运算。包括与(&&)、或(||)、非(!)3 种。

4. 关系运算符

关系运算符主要用于比较运算,包括大于(>)、小于(<)、等于(= =)、大于等于(>=)、小于等于(<=)和不等于(!=)6 种。

5. 位运算符

位运算符是指将参与运算的对象按二进制位进行运算,包括位与(&)、位或(|)、位反(~)、位异或(^)、左移(<<)、右移(>>)6 种。

6. 条件运算符

条件运算符是目前为止C语言中唯一一个 3 元运算符,也称为 3 目运算符,用于条件求值(? :)。

7. 取字节运算符

取字节运算符sizeof也是C语言的一个特殊运算符,它用于计算对象(可以是常量、变量及复合数据类型等)在计算机内存中所占的字节数。有的资料也把它当做函数看待,但C语言系统中,sizeof是一个运算符。

8. 其他运算符

另外,C语言中还有逗号运算符(,)、数组下标运算符([])以及结构体成员运算符(。和—〉)等。

表 3-1 运算符分类

3.1.2 表达式的分类

C语言中,表达式是一种有值的语法结构,它一般由运算符将变量、常量或函数返回值结合而成,通常表达式可作为程序执行过程中某个操作步骤,或者计算的表达形式。另外,有些表达式会生成某种类型的数值,并将该值赋给某个变量或与其他表达式进行比较等逻辑操作。表达式按照运算符的不同进行分类,主要有算术表达式、赋值表达式、逻辑表达式和关系表达式等。

1. 算术表达式

算术表达式由算术运算符和控制运算优先级的括号连接而成,是进行算术运算的基本表达形式。例如:

其中,符号“*”表示算术运算“乘”,“/”表示算术运算“除”。

2. 赋值表达式

赋值表达式一般由赋值运算符、算术运算符和操作对象组合而成,并由简单的赋值运算符“=”连接起来,一般形式为

例如:

第一个表达式表示将x+12 的值赋给a,第二个表达式表示将数值 100 分别赋给a1,a2和a3,第三个表达式表示将b+12 的值重新赋给b。

3. 逻辑表达式

逻辑表达式一般由逻辑运算符和操作对象组合而成,是C语言中进行逻辑判断的主要表达形式,也是条件控制语句中常用的控制表达式之一。如下都是逻辑表达式:

第一个表达式表示a和b的与运算,第二个表达式表示c和d先求或运算,然后结果再和m进行与运算,第三个表达式表示求x的非运算

4. 关系表达式

关系表达式一般由关系运算符和操作对象组合而成,和逻辑表达式类似,关系运算符也是C语言中进行数值判断的主要表示形式,是条件控制语句中应用非常广泛的控制表达形式之一。如下都是关系表达式:

第一个表达式表示算术关系运算,判断a是否大于b,第二个表达式表示c是否小于等于d,第三个表达式判断m和n是否相等。

5. 逗号表达式

逗号表达式由其他表达式和逗号运算符组成,常用于变量定义。例如:

其中a, b, c就属于逗号表达式。再如:

需要说明的是,逗号表达式的值总是等于最后一个表达式的值,如下定义与赋值:

赋值之后,sum的值将等于赋值号右边表达式a =12, b = 100, c = a+b的值,该表达式是逗号表达式,其值为最后一个表达式的值,即c = a+b。c = a+b是一个赋值表达式,其值为c的值,即为a和b的和 112。因此,sum的值为 112。

6. 复合表达式

复合表达式是几种简单表达式的组合,是比较复杂的表达式,例如:

该表达式是一个赋值表达式,但赋值号右边又是比较复杂的算术表达式。在C语言中,复合表达式应用非常广泛。 Se74MkoIplKBmtzszh4AwgO9m3G/s4rhRO0ecR6L0SB97xRQGUexs54yS1yZBX1D

点击中间区域
呼出菜单
上一章
目录
下一章
×