在单片机C语言编程中,通常用到30个运算符,如表1,其中算术运算符13个,关系运算符6个,逻辑运算符3个,位操作符7个,指针运算符1个。
在C语言中,运算符具有优先级和结合性。
算术运算符优先级规定为:先乘除模(模运算又叫求余运算),后加减,括号最优先。结合性规定为:自左至右,即运算对象两侧的算术符优先级相同时,先与左边的运算符号结合。
关系运算符的优先级规定为:>、=、<=四种运算符优先级相同,=、!=相同,但前四种优先级高于后四种。关系运算符的优先级低于算术运算符,高于赋值(=)运算符。
逻辑运算符的优先级次序为:!、&&、||。
当表达式中出现不同类型的运算符时,非(!)运算符优先级最高,算术运算符次之,关系运算符再次之,其次是&&和||,最低为赋值运算符。
位操作的对象只能是整型或字符数据型。
表1单片机C语言常用运算符运 算 符范 例说 明
算
术
运
算 内容来自单片机之家www.dpj100.com+a+ba变量值和b变量值相加
-a-ba变量值和b变量值相减
*a*ba变量值乘以b变量值
/a/ba变量值除以b变量值
%a%b取a变量值除以b变量值的余数
= 内容来自单片机之家www.dpj100.coma=5a变量赋值,即a变量值等于5
+=a+=b 内容来自单片机之家www.dpj100.com等同于a=a+b,将a和b相加的结果存回a
-=a-=b等同于a=a-b, 将a和b相减的结果存回a
*=a*=b等同于a=a*b, 将a和b相乘的结果存回a
/=a/=b等同于a=a/b, 将a和b相除的结果存回a
%=a%=b等同于a=a%b, 将a和b相除的余数存回a 内容来自单片机之家www.dpj100.com
++a++a的值加1,等同于a=a+1
--a--a的值减1,等同于a=a-1
关
系
运
算>a>b 内容来自单片机之家www.dpj100.com测试a是否大于b
a测试a是否小于b
= =a= =b测试a是否等于b
>=a>=b测试a是否大于或等于b
<=a<=b 内容来自单片机之家www.dpj100.com测试a是否小于或等于b
!=a!=b测试a是否不等于b
逻辑运算&&a&&ba和b作逻辑与(AND),2个变量都为真时结果才为真
||a||ba和b作逻辑或(OR),只要有1个变量为真,结果就为真
!!a将a变量的值取反,即原来为真则变为假,原为假则为真
位
操
作
运
算>>a>>b将a按位右移b个位,高位补0 内容来自单片机之家www.dpj100.com
<<a<<b将a按位左移b个位,低位补0
|a|ba和b按位做或运算
&a&ba和b按位做与运算
^a^ba和b按位做异或运算
~~a将a的每一位取反
&a=&b将变量b的地址存入a寄存器
指针**a用来取a寄存器所指地址内的值