目录
一.操作符的分类
1.算术操作符
2.移位操作符
3.位操作符
4.赋值操作符
5.单目操作符
6.关系运算符
7.逻辑运算符
8.条件操作符(三目操作符)
❄️9.逗号表达式
10.下标引用,函数调用和结构成员
二.操作符的属性
1.操作符的优先级
2.操作符的结合性
一.操作符的分类
1.算数运算符
算数运算符很简单,就是我们平时用的加减乘除再加个取模操作符( + - * / %)。
需要注意的是 % 操作符,它是一个双目操作符,使用它需要两个操作数,且这两个操作数都必须得是整数;
/ 如果没作说明,则两数相除得到得就是商,例如 5/2=2,5.0/2.0=2.5。这也是初学者常常忽略的地方,使用时要特别注意。
2.移位操作符
<< 左移操作符 : 将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)例子:
>> 右移操作符:将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,即左边补符号位,右边丢弃。
注意移位操作符的操作数只能是整数,且不要移动负数位,这个标准是未定义的。
如:2<<-1 x
3.位操作符
& 按位与:两个操作数的对应的二进制位如果都是1,则为1,其他都为0。
| 按位或:两个操作数的对应的二进制位如果有1个1,计算结果就为1,两个都是0,才是0;
^ 按位异或:两个操作数的对应的二进制位如果相同则为0,不相同则为1.
规律:a^a=a;
a^0=0;
4.赋值操作符
就是一个等于号 ( = ),在C语言中一个等于号表示的是赋值,两个等于号才是判断等于,这点也经常被忽略。
复合运算符:+= -= *= /= %=..... 理解的方法 a+=1 == a=a+1
5.单目操作符
! 逻辑反操作:用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假;
例:!(A && B) 为真;
- 负值;
+ 正值;
& 取地址运算符;
* 间接访问操作符也叫解引用操作符;
这个操作符和 & 操作符经常应用在指针中。
sizeof :计算操作数的类型长度,单位是字节,返回值是无符号整型;
~ 对一个数的二进制按位取反
-- 和 ++ :他们都分为前置++(--)和后置++(--);
前置++(--)是先++,再赋值;
后置++(--) 是先赋值,再++(--);
例子:
(类型) 强制类型转换;
能将一个类型强制转换成另一个类型,具体使用方法请看下图:
注意这里的类型转换是不符合四舍五入规则的。
6.关系操作符
> >= <=
!= 用来测试“ 不想等 ”
== 用来测试“ 相等 ”
7.逻辑操作符
&& 逻辑与:相当于“ 且 ”,两边都为真时,才为真;
例:1&&0 为假;
|| 逻辑或:相当于“ 或 ”,只要有一边为真,则为真;
例:1||0 为真;
注意:区分逻辑与 && 和按位与 &;
区分逻辑或 || 和按位或 |;
1&2==0
1&&2==1
1|0==1
1||0==1
8.条件操作符(三目操作符)
即:exp1?exp2:exp3
意思为:如果 exp1为真,则返回表达式exp2的值,否则返回表达式exp3的值
实例:
9.逗号表达式
exp1,exp2,exp3,exp4,....expn
就是用逗号隔开多个表达式,从左至右依次执行,整个表达式的结果是最后一个表达式的结果
例:
如果函数传参中含有逗号表达式,则实参的个数实际上就是逗号表达式的个数,即括号的个数
如:
10.下标引用,函数调用,结构成员
下标引用操作符: 一个数组名 + 一个索引值
函数调用:()
结构成员:
. 结构体成员名
-> 结构体指针 - > 成员名
例:
二.操作符的属性
1.操作符的优先级
2.操作符的结合性
上表总结出如下规律:
1.结合方向只有三个是从右往左,其余都是从左往右。
⒉.所有双目运算符中只有赋值运算符的结合方向是从右往左。
3.另外两个从右往左结合的运算符也很好记,因为它们很特殊:一个是单目运算符,一个是三目运算符。4.C语言中有且只有一个三目运算符。
5.逗号运算符的优先级最低,要记住。
6.此外要记住,对于优先级:算术运算符>关系运算符>逻辑运算符>赋值运算符。逻辑运算符中“逻辑非!”除外。
上表中,优先级同为1 的几种运算符如果同时出现,那怎么确定表达式的优先级呢?这是很多初学者迷糊的地方。下表就整理了这些容易出错的情况:
本篇文章到此就结束啦,如有错误或是建议,欢迎小伙伴们指出 。
谢谢你的阅读。