详解操作符

1. 操作符的分类

算术操作符
移位操作符
位操作符
赋值操作符
单目操作符
关系操作符
逻辑操作符
条件操作符
逗号表达式
下标引用、函数调用和结构成员

2.算数操作符

+ - * / %

** 区别"/"和“%”**

  1. 除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。
  2. 对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。
    在这里插入图片描述3. % 操作符的两个操作数必须为整数。返回的是整除之后的余数。

3.移位操作符

3.1本质

移动的是二进制的位

补充:数据的二进制表示
1.各种数据的表示
在这里插入图片描述
2.整数的二进制表示
在这里插入图片描述

3.2分类

<< 左移操作符
>> 右移操作符
    
注:移位操作符的操作数只能是整数。

3.2.1<< 左移操作符

在这里插入图片描述

3.2.2>> 右移操作符

在这里插入图片描述
正数的右移符号不变
负数的逻辑右移也不发生变化
但是算数右移发生变化

4.位操作符

在这里插入图片描述
在这里插入图片描述

5.赋值操作符

赋值操作符是一个很棒的操作符,他可以让你得到一个你之前不满意的值。也就是你可以给自己重新赋值。

赋值操作符可以连续使用,比如:
int a = 10;
int x = 0;
int y = 20;
a = x = y+1;//连续赋值
这样的代码感觉怎么样?
那同样的语义,你看看:
x = y+1;
a = x;
这样的写法是不是更加清晰爽朗而且易于调试。

复合赋值符
在这里插入图片描述

6. 单目操作符

6.1 单目操作符介绍

在这里插入图片描述
sizeof的注意
在这里插入图片描述
变量的括号可以省略;

~的解释
对补码取反
在这里插入图片描述
!的解释
在这里插入图片描述

6.2sizeof和数组

在这里插入图片描述
函数传值为数列首地址

注意首地址为指针大小都为4字节

7. 关系操作符

在这里插入图片描述

8. 逻辑操作符

在这里插入图片描述
在这里插入图片描述

9. 条件操作符

exp1 ? exp2 : exp3

在这里插入图片描述

10. 逗号表达式

exp1, exp2, exp3, …expN

在这里插入图片描述

11. 下标引用、函数调用和结构成员

1.下标引用操作符

在这里插入图片描述
2.函数调用操作符
在这里插入图片描述

3.访问一个结构的成员
在这里插入图片描述
在这里插入图片描述

12. 表达式求值

表达式求值的顺序一部分是由操作符的优先级和结合性决定。
同样,有些表达式的操作数在求值的过程中可能需要转换为其他类型。

12.1 隐式类型转换(小于int的类型转化)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

12.2 算术转换(int类型及其以上的类型转化)

在这里插入图片描述

12.3 操作符的属性

复杂表达式的求值有三个影响的因素。

  1. 操作符的优先级
  2. 操作符的结合性
  3. 是否控制求值顺序。
    两个相邻的操作符先执行哪个?取决于他们的优先级。如果两者的优先级相同,取决于他们的结合性。
    操作符优先级
    在这里插入图片描述
    ③中的是只用&&和||和?:和,
    问题代码
    在这里插入图片描述

总结:我们写出的表达式如果不能通过操作符的属性确定唯一的计算路径,那这个表达式就是存在问题
的。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值