我们上小学的时候就学过数学,从最简单的加法运算开始,就学习了数值的运算。例如:
2 + 3 = 5
6 + 9 = 15
这就是一个加法运算,也称为算数表达式。其中,加号“+”称为“运算符”,参与加法运算的2和 3数值称为“运算数”或者“操作数”。整个加法运算2+3就称为“算数表达式”。加法运算得到的结果5这个数值,称为“算数表达式的值”,简称“表达式的值”。我们再多举几个例子,如下:
6 + 9 = 15
加号+是运算符,6和9是操作数,6+9是加法表达式,结果15是表达式的值。
9 – 3 = 6
减号-是运算符,9和3是操作数,9-3是减法表达式,结果6是表达式的值。
3 * 2 = 6
乘号*是运算符,3和2是操作数,3*2是乘法表达式,结果6是表达式的值。
此时,我们总结了运算符,操作数,表达式,表达式值的概念。那么,C语言定义了多个运算符,每个运算符对操作数有不同的运算,最终得到各种表达式的值。下面一一介绍C语言定义的运算符和它们的使用方法。
首先,我们来统一介绍C语言定义的运算符,后面再举例它们的使用方法,通过编程测试例子来验证,加深理解。注意:某些运算符需要用到后面的知识,这些运算符的测试例子,就到后面课程介绍的时候再讲解。C语言提供的运算符和使用特性如下表。
优先级 | 运算符 | 定义 | 要求运算对象数 | 运算方向 | 1 | ( ) | 小括号 | 运算对象个数无限制 | 从左到右 | -> | 指针对象指向其成员 | [ ] | 定义数组,取数组元素 | . | 获取结构体中的成员 | 2 | ++ | 自增运算符 | 1个运算对象(单目运算符) | – – | 自减运算符 | ! | 取非逻辑运算符 | ~ | 按位取反逻辑运算符 | * | 指针取值运算符 | & | 对象取地址运算符 | Sizeof | 取长度运算符 | 3 | * | 乘法运算符 | 2个运算对象(双目运算符) | / | 除法运算符 | % | 取余运算符 | 4 | + | 加法运算符 | 2个运算对象(双目运算符) | 从左到右 | – | 减法运算符 | 5 | << | 左移运算符 | 2个运算对象(双目运算符) | >> | 右移运算符 | 6 | < | 判断小于运算符 | 2个运算对象(双目运算符) | <= | 判断小于等于运算符 | > | 判断大于运算符 | >= | 判断大于等于运算符 | 7 | == | 判断等于运算符 | 2个运算对象(双目运算符) | != | 判断不等于运算符 | 8 | & | 按位与操作运算符 | 2个运算对象(双目运算符) | 9 | | | 按位或操作运算符 | 2个运算对象(双目运算符) | 10 | ^ | 按位异或操作运算符 | 2个运算对象(双目运算符) | 11 | && | 逻辑与运算符 | 2个运算对象(双目运算符) | 12 | || | 逻辑或运算符 | 2个运算对象(双目运算符) | 13 | ? : | 条件选择运算符 | 3个运算对象(三目运算符) | 从右到左 | 14 | = | 赋值运算符 | 2个运算对象(双目运算符) | += | 对象自加赋值运算符 | -= | 对象自减赋值运算符 | *= | 对象自乘赋值运算符 | /= | 对象自除赋值运算符 | %= | 对象自取余赋值运算符 | >>= | 对象自己右移赋值运算符 | <<= | 对象自己左移赋值运算符 | &= | 逻辑与操作再赋值运算符 | ^= | 逻辑异或操作再赋值运算符 | |= | 逻辑或操作再赋值运算符 | 15 | , | 逗号运算符 | 运算对象个数无限制 | 从左到右 |
后面举例子分析运算符的使用。