C51中的运算符
C51中的运算符与通用C语言基本一致,常用的主要是位运算符、算术运算符、关系运算符、逻辑运算符和赋值运算符等,下面分别介绍这些运算符。
(1)位运算符
汇编语言对位的处理能力是很强的,但是C语言也能对运算对象进行按位操作,从而使C语言也能具有一定的对硬件直接进行操作的能力。位运算符的作用是按位对变量进行运算,但是并不改变参与运算的变量的值。如果要求按位改变变量的值,则要利用相应的赋值运算。还有就是位运算符是不能用来对浮点型数据进行操作的。C51中有6种位运算符,如表1.5.3所示。
表1.5.3 位运算符
运算符 | 功能 |
& | 按位与 |
| | 按位或 |
^ | 按位异或 |
~ | 按位取反 |
>> | 右移 |
<< | 左移 |
(2)算术运算符
C51算术运算符与通用C语言完全一致,就是对数值进行算术运算,其中加、减、乘、除、求余运算是双目运算,其结果可以是字符型数、整数和实数(注意求余运算符结果是整数)。自增、自减运算是单目运算,其操作对象只能是整型变量,不能是常量或表达式等其他形式。C51中有7种算术运算符,如表1.5.4所示。
表1.5.4 算术运算符
运算符 | 功能 |
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 求余运算 |
++ | 自加 |
-- | 自减 |
(3)关系运算符
C51关系运算符与通用C语言完全一致,用于对两个操作数的比较。关系运算符中的“关系”二字的含义是指一个数据与另一个数据之间的关系,这种关系只有成立与不成立两种可能情况,在C51中用逻辑值来表示,逻辑上的真与假是用数字“1”与“0”来表示的。关系成立时结果为真(1),否则结果为假(0)。C51中有6种关系运算符,如表1.5.5所示。
表1.5.5 关系运算符
运算符 | 功能 |
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
== | 测试相等 |
!= | 测试不等 |
(4)逻辑运算符
C51逻辑运算符与通用C语言完全一致,用于进行逻辑运算。优先级:!运算级别最高、&&运算与||运算同级。!运算的优先级高于算术运算符,而&&和||运算则低于关系运算符。结合方向:逻辑非(单目运算符)具有右结合性;逻辑与和逻辑或(双目运算符)具有左结合性。C51中有3种逻辑运算符,如表1.5.6所示。
表1.5.6 逻辑运算符
运算符 | 功能 |
&& | 逻辑与 |
|| | 逻辑或 |
! | 逻辑非 |
(5)赋值运算符
C51逻辑运算符与通用C语言完全一致,赋值运算符(=)用于连接表达式(右侧)和变量(左侧),即将赋值运算符右侧的表达式的结果赋予赋值运算符左侧的变量,右侧的表达式可以是常量、变量、表达式或另外一个赋值表达式。C51中有12种逻辑运算符,其中第1种是基本赋值运算,其他11种是复合赋值运算,如表1.5.7所示。
表1.5.7 赋值运算符
运算符 | 功能 |
= | 基本赋值 |
+= | 加法赋值 |
-= | 减法赋值 |
*= | 乘法赋值 |
/= | 除法赋值 |
%= | 求余赋值 |
>>= | 右移赋值 |
<<= | 左移赋值 |
&= | 按位与赋值 |
|= | 按位或赋值 |
^= | 按位异或赋值 |
~= | 按位取反赋值 |