单片机C语言编程常用运算符介绍
单片机C语言编程常用的运算符介绍
在单片机 C 语言编程中,通常用到 30 个运算符,如表 1 ,其中算术运算符 13 个,关系运算符 6 个,逻辑运算符 3 个,位操作符 7 个,指针运算符 1 个。 在 C 语言中,运算符具有优先级和结合性。 算术运算符优先级规定为:先乘除模(模运算又 叫求余运算 )
在单片机C语言编程中,通常用到30个运算符,如表1,其中算术运算符13个,关系运算符6个,逻辑运算符3个,位操作符7个,指针运算符1个。
在C语言中,运算符具有优先级和结合性。
算术运算符优先级规定为:先乘除模(模运算又叫求余运算),后加减,括号最优先。结合性规定为:自左至右,即运算对象两侧的算术符优先级相同时,先与左边的运算符号结合。
关系运算符的优先级规定为:>、=、<=四种运算符优先级相同,=、!=相同,但前四种优先级高于后四种。关系运算符的优先级低于算术运算符,高于赋值(=)运算符。
逻辑运算符的优先级次序为:!、&&、||。
当表达式中出现不同类型的运算符时,非(!)运算符优先级最高,算术运算符次之,关系运算符再次之,其次是&&和||,最低为赋值运算符。
位操作的对象只能是整型或字符数据型。
表1单片机C语言常用运算符
运 算 符
范 例
说 明
算
术
运
算
+
a+b
a变量值和b变量值相加
-
a-b
a变量值和b变量值相减
*
a*b
a变量值乘以b变量值
/
a/b
a变量值除以b变量值
%
a%b
取a变量值除以b变量值的余数
=
a=5
a变量赋值,即a变量值等于5
+=
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
%=
a%=b
等同于a=a%b,将a和b相除的余数存回a
++
a++
a的值加1,等同于a=a+1
--
a--
a的值减1,等同于a=a-1
关
系
运
算
>
a>b
测试a是否大于b
<
a
测试a是否小于b
= =
a= =b
测试a是否等于b
>=
a>=b
测试a是否大于或等于b
<=
a<=b
测试a是否小于或等于b
!=
a!=b
测试a是否不等于b
逻辑运算
&&
a&&b
a和b作逻辑与(AND),2个变量都为真时结果才为真
||
a||b
a和b作逻辑或(OR),只要有1个变量为真,结果就为真
!
!a
将a变量的值取反,即原来为真则变为假,原为假则为真 内
位
操
作
运
算
>>
a>>b
将a按位右移b个位,高位补0
<<
a<<b
将a按位左移b个位,低位补0
|
a|b
a和b按位做或运算
&
a&b
a和b按位做与运算
^
a^b
a和b按位做异或运算
~
~a
将a的每一位取反
&
a=&b
将变量b的地址存入a寄存器
指针
*
*a
用来取a寄存器所指地址内的值
1级优先级 左结合 () 圆括号 [] 下标运算符 -> 指向结构体成员运算符 . 结构体成员运算符 2级优先级 右结合 ! 逻辑非运算符 ~ 按位取反运算符 ++ 前缀增量运算符 -- 前缀增量运算符 + 正号运算符 - 负号运算符 (类型) 类型转换运算符 * 指针运算符 & 地址与运算符 sizeof 长度运算符 3级优先级 左结合 * 乘法运算符 / 除法运算符 % 取余运算符 4级优先级 左结合 + 加法运算符 - 减法运算符 5级优先级 左结合 << 左移运算符 >> 右移运算符 6级优先级 左结合 、>= 关系运算符 7级优先级 左结合 == 等于运算符 != 不等于运算符 8级优先级 左结合 & 按位与运算符 9级优先级 左结合 ^ 按位异或运算符 10级优先级 左结合 | 按位或运算符 11级优先级 左结合 && 逻辑与运算符 12级优先级 左结合 || 逻辑或运算符 13级优先级 右结合 ? : 条件运算符 14级优先级 右结合 = += -= *= /= %= &= ^= |= <<= >>= 全为赋值运算符 15级优先级 左结合 , 逗号运算符 优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。 所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。其它的