我们上小学的时候就学过数学,从最简单的加法运算开始,就学习了数值的运算。例如:
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 | , | 逗号运算符 | 运算对象个数无限制 | 从左到右 |
后面举例子分析运算符的使用。