C语言操作符总结

操作符的分类:
1 算术操作符
2 移位操作符
3 位操作符
4 赋值操作符
5 单目操作符
6 关系操作符
7 逻辑操作符
8 条件操作符
9 逗号表达式

1 算术操作符:+ - * / %

1) 除了%操作符之外,不能用于浮点数。
2)对于/操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。
3) %操作符的两个操作数必须为整数。返回的是整除之后的余数。
2 移位操作符
<< 左移操作符:左边抛弃、右边补0

右移操作符:

首先右移运算分两种:

1)算术移位
左边用符号位填充,右边丢弃
2) 逻辑移位
左边补0,右边丢弃

3 位操作符:& | ^
注:他们的操作数必须是整数。
4 赋值操作符
该操作符 可以修改之前不满意的值,就是你可以给自己重新赋值。

赋值操作符可以连续使用
+= -= *= /= %= >>= <<= &= |= ^=
这些运算符都可以写成复合的效果,这样写更加简洁。
5 单目运算符
! 逻辑反操作

  • 负值
  • 正值
    & 取地址
    sizeof 操作数的类型长度(以字节为单位)
    ~ 对一个数的二进制按位取反
    – 前置、后置–
    ++ 前置、后置++
  • 间接访问操作符(解引用操作符)
    (类型) 强制类型转换
    前置++和–:先自增(自减),再使用
    后置++和–:先使用,再自增(自减)
    6 关系操作符:> >= < <= != 用于测试“不相等” == 用于测试“相等”
    警告:
    在编程的过程中== 和=不小心写错,导致的错误
    7 逻辑操作符
    && 逻辑与 :左边表达式为假,不再执行后边的表达式

|| 逻辑或 :左边表达式为真,不再执行后边的表达式
区分逻辑与&&和按位与&

区分逻辑或||和按位或|

1&2----->0
1&&2---->1
1|2----->3
1&&2---->1

8 条件操作符

exp1 ? exp2 : exp3

可以使用条件表达式实现找两个数中较大值,比if else语句简洁明了

9 逗号表达式
exp1, exp2, exp3, …expN
逗号表达式,就是用逗号隔开的多个表达式。
逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。

算术转换
如果某个操作符的各个操作数属于不同的类型,那么除非其中一个操作数的转换为另一个操作数的类型,否则操作就无法进行。下面的层次体系称为寻常算术转换。
long double
double
float
unsigned long int
long int
unsigned int
int
如果某个操作数的类型在上面这个列表中排名较低,那么首先要转换为另外一个操作数的类型后执行运算。
警告:但是算术转换要合理,要不然会有一些潜在的问题。
操作符的属性
复杂表达式的求值有三个影响的因素。

  1. 操作符的优先级
  2. 操作符的结合性
  3. 是否控制求值顺序。
    两个相邻的操作符先执行哪个?取决于他们的优先级。如果两者的优先级相同,取决于他们的结合性。

表达式的求值部分由操作符的优先级决定。

eg1: ab + cd + e*f

注释:代码1在计算的时候,由于比+的优先级高,只能保证,的计算是比+早,但是优先级并不能决定第三个比第一个+早执行。
所以表达式的计算机顺序就可能是:a
b cd ab + cd ef ab + cd + ef
或者:a
b cd ef ab + cd ab + cd + e*f
eg2: c + --c;
注释:同上,操作符的优先级只能决定自减–的运算在+的运算的前面,但是我们并没有办法得知,+操作符的左操作数的获取在右操作数之前还是之后求值,所以结果是不可预测的,是有歧义的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值